Wieso hält getline(cin, meinstring) nicht zur Eingabe an?



  • Servus,

    irgendwas passt da nicht, ich habe an den anderen Stellen cin >> var genutzt, das klappt, aber wenn ich die ganze Zeile will, wird mir kein Eingabeprompt angezeigt, sondern das Programm rast darüber hinweg.

    int Tui::doCliCall(){
        // Konfigurieren
        std::cout << "* -> Eingabe des Callstrings, 'RETURN' zum Absenden; 'q' zum Abbrechen.\n";
        std::cout << "* Eingabe [String]:\n";
        std::string callCommand;
        std::getline(std::cin, callCommand);
        std::cout << "doCliCall():" << callCommand << std::endl;
        if ( callCommand == "q" )
        {
            stop();
        }
        else 
        {
            this->doCliCallSet(callCommand);  
        }
        return 0;
    }
    

  • Mod

    getline zeigt kein Eingabeprompt. getline liest aus dem Eingabestrom bis zum nächsten Zeilenumbruch. In manchen Fällen beinhaltet dies das Warten auf den Eingabestrom, falls kein Zeilenumbruch drin sein sollte. Deine Konsole, nicht getline(!), zeigt dann eventuell ein Eingabeprompt an, wenn sie denn so konfiguriert ist.
    Wenn dies nicht passiert, dann wird wohl noch ein Zeilenumbruch im Stream sein. Vorangegangene formatierte Eingaben (d.h. operator >>) die durch Zeilenumbrüche getrennt sind, sind ein typischer Fall, denn diese lassen den abschließenden Zeilenumbruch noch im Eingabestrom.

    Und lies ein Grundlagenbuch.



  • Ich lese immer ein bisschen nach ... und wenn es hapert frag ich hier nach. Oft liefert Google auch viele unterschiedliche Ansätze und da freue ich mich, wenn ich dann durch euch den wahrscheinlich am besten geeignetesten wählen kann.

    Ich habe es nun geschafft, wie ich auf cin etwas mehr einwirken kann. Allerdings habe ich es noch nicht hinbekommen, mir die anzeigen zu lassen, was in cin gerade schlummert. Zum Buffer leeren und Fehlerstatus half folgender Thread:
    http://www.c-plusplus.net/forum/238035



  • Allerdings habe ich es noch nicht hinbekommen, mir die anzeigen zu lassen, was in cin gerade schlummert.

    Meinst du damit , das du das was du eingegeben hast ausgibst ?

    Weiß doch dem input einfach eine string zu in den dann die eingabe eingefügt wird und dann einfach den string ausgeben 🙂


Anmelden zum Antworten