cin.getline() Probleme



  • Quellcode:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int meni;
    char men[256];
    string befehl;
    void noticed(void);
    
    int main(void) 
    {
        cout << "Gib den Befehl ein: ";
        while (true) 
        {
    
            cin >> befehl;
            if(befehl=="exit") //Ende
                break;
            else if(befehl=="noticed"&&locked==1)
                noticed();
            else{
                cout << "Befehl unbekannt: " << befehl << endl;
            }
                cout << "Gib den Befehl ein: ";
        }
        return 0;
    }
    
    void noticed(void)
    {
        cout << "\n\tWas moechtest du tun?\n";
        cout << "[1] Notiz hinzufuegen\n";
        cout << "[2] Notiz-Datei loeschen\n";
        cin >> meni;
        switch(meni)
        {
        case 1:
            {
                cout << "Gib die anzufuegende Notiz ein: ";
                cin.getline(men,256);
                ofstream notice("note.txt",ios::app);
                notice << men << endl;
                notice.close();
                cout << "Notiz wurde hinzugefuegt.\n";
                break;
            }
        case 2:
            {
                ofstream notice("note.txt");
                notice.clear();
                notice.close();
                cout << "Notiz-Datei wurde gelöscht.\n";
                break;
            }
        }
    }
    

    Wenn ich 'noticed' eingebe zeigt er mir das an:
    'Bitte Notiz eingeben: Notiz wurde hinzugefuegt.' 😡

    Wie kann man das Prob beheben 😕 😮



  • Hups, zeile 19 muss lauten:

    else if(befehl=="noticed")
    

    Trotzdem brauch ich noch hilfe - funzt immer noch nicht 😡



  • Schau mal hier:

    getline nach cin



  • Original erstellt von Knuddlbaer:
    **Schau mal hier:

    getline nach cin
    **

    Das wär was für die FAQ, weil das Problem schon öfter im Forum diskutiert wurde. Im Übrigen bringt aber das beim gcc nix. Da muss man glaube ich "cin.sync()" aufrufen. (Zwar offtopic, da ich mich aber ziemlich lange damit rumgeärgert habe, schreib ich's mal hier rein...) Wenn du sowieso keine Leerzeilen haben willst, kannst du's auch mal damit probieren:

    do
    {
        cin.getline(my_string);
    } while(my_string.empty() && cin.good());
    if(!cin.good())
        //Fehlerbehandlung (entfällt, wenn man cin.exceptions entsprechend gesetzt hat, dann mit try/catch)
    

    [ Dieser Beitrag wurde am 04.07.2003 um 16:55 Uhr von Steven editiert. ]


Anmelden zum Antworten