[Gelöst] Warum führt eine Leerzeile bei cin zu fail()?



  • Diese Schleife:

    while(cin.good())
    {
       cin.get(lin,BUFSIZE,'\n');
    // Zeilenendezeichen retten
       cin.get(c);
       ...
    }
    

    bricht ab, wenn eine Zeile auftaucht, die nur aus einem '\n' besteht.

    Wie kann ich das verhindern?



  • Soweit ich weiß, interpretieren (manche) Unix' eine leere Zeile as EOF. Mehr kann ich dazu auch nicht sagen.



  • Miq schrieb:

    Diese Schleife:

    while(cin.good())
    {
       cin.get(lin,BUFSIZE,'\n');
    // Zeilenendezeichen retten
       cin.get(c);
       ...
    }
    

    bricht ab, wenn eine Zeile auftaucht, die nur aus einem '\n' besteht.

    Wie kann ich das verhindern?

    cin.clear()

    Aber warum nimmst du nicht einfach getline?

    #include <iostream>
    using namespace std;
    
    int main() {
        const int BUFSIZE = 1024;
        char lin[BUFSIZE], c;
        while(cin.good()) {
            cin.getline(lin, BUFSIZE);
            std::cout << lin << std::endl;
        }
    }
    

    mfg.



  • joomoo schrieb:

    Aber warum nimmst du nicht einfach getline?
    mfg.

    Aua... 😡 Wie banal, und es funktioniert auch! Danke für den Anstoß! 🙂



  • Besser std::getline aus für std::string nehmen, da muss man keine Begrenzung angeben...


Anmelden zum Antworten