Wie funktioniert das ?
-
Hallo,
ich versuche vergeblich zu erziehlen, dass wenn ich [Enter] in eine Befehlsleiste eingebe, dass die Befehlsleiste wiederrum erscheint.Beispiel
Ausgabe :
Geben Sie einen Befehl ein> //Enter wurde getippt
Geben Sie einen Befehl ein>und nicht
Geben Sie einen Befehl ein> //Enter wurde getippt
_ //Leere Zeile
-
Was hast Du denn bisher versucht um das zu erreichen
Die Standardantwort hier wäre imho "mit cout?" Evtl. hilft Dir der Hinweis auf std::flush schon weiter:
std::cout << "Prompt> " << std::flush;
-
//... #include <string> //... char ch_enter(13); //13 ist glaub ich der ASCII Wert für Enter string command; //... CommandLine: cout << "\nGeben Sie einen Befehl ein> "; cin >> command; //.... if (command == ch_enter) { //Hier zeigt der Compiler ein Fehler an goto CommandLine; }
-
while(true) { cout << "\nGeben Sie einen Befehl ein> "; cin >> command; //Auswertung und Verarbeitung von command //um aus der while-Schleife rauszuspringen break; benutzen }
-
Als damit funktioniert das bei mir nicht.
Der Fehler wird immer noch Angezeigt (siehe 3.Beitrag von oben).
-
ioBen schrieb:
Als damit funktioniert das bei mir nicht.
Der Fehler wird immer noch Angezeigt (siehe 3.Beitrag von oben).Liegt vermutlich daran, dass man nicht einfach einen std::string mit nem char vergleichen kann?!
Kleine Erweiterung von schorschs code :
std::string command(""); while(command != "exit") { //Mit exit verlassen wir den Prompt cout << "\nGeben Sie einen Befehl ein> "; cin >> command; //Auswertung und Verarbeitung von command }
MfG
GPC
-
Ok, dass hat nur jetzt weiter geholfen
Die Datentypen sollte ich mal wiederholen ^^Also thx
-
Dein Hauptproblem ist, daß cin alle Whitespaces (inklusive ENTER) ignoriert, bis das erste "echte" Zeichen kommt. Um das zu umgehen, kannst du deine Eingabe etwas umstellen:
string command; while(command!="exit") { cout<<"Bitte Befehl eingeben>"; getline(cin,command); if(command.empty()) continue; ... }
(btw solltest du "goto" lieber vermeiden - zumindest solange du es nicht unbedingt brauchst)