Gort Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Hallo ihr Bin neu hier (und bei c++) und hab 'natürlich' gleich eine frage :floet: Unkreativ wie ich nunmal bin, wollt ich mir nach dem 'hello world' ein echo schreiben. Also ich tippe etwas und das gleiche wird mir wieder auf der console wieder ausgegeben, solange bis ich exit eingebe. Es funktioniert auch 'fast' #include <iostream> #include <string> //using namespace std; int main() { std::string inp = "Hallo ... echo ... \n\n"; do { std::cout << inp << std::endl; std::cin >> inp; }while (inp != "exit"); return 0; } Hierbei ergeben sich nun 2 probleme. Zum einen ist es so, dass wenn der String mehr als 2 Worte beinhaltet jedes in einer extra Zeile ausgegeben wird. Das 2te problem ist, dass die Schleife beendet wird, auch wenn ich exit nur als teil des strings eingebe, aber das ist ja nur die offensichtliche reaktion auf das erste problem, wo jeweils nur ein wort in inp landet. Meine grobe vorstellung von dem Problem ist, dass die eingabe in einen buffer geht, aus dem cin dann die daten holt, was aber von einem Space unterbrochen wird. Daraus folgt dass cout dieses eine wort ausgibt, die schleife neu anfängt, cin sieht, dass noch was im buffer ist, wodurch eine weitere tastaturabfrage unnötig wird und sich einfach das nächste wort rausholt usw usf. Was kann ich nun dagegen tun? mfg Gort P.S.: Falls das ein triviales problem ist, dass man sich hätte googeln können (würd ich drauf wetten), entschuldigt bitte, aber anscheinend weiß ich nicht wonach genau ich da suchen soll, da ich leider nix gefunden hab ;P Zitieren
Guybrush Threepwood Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Benutz getline statt cin, weil cin wie du ja schon festgestellt hast nur bis zum Leerzeichen liest. Zitieren
Gort Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 Danke für den tip Da ergeben sich leider 1-2 andere probleme /: Oder ich mach was falsch.. cin.getline mag anscheinend keine strings, sondern nur char-arrays? Und nehm ich ein char-array funktioniert der exit irgendwie nicht? P.S.: Hey! Hinter Dir! Ein dreiköpfiger Affe! Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 cin.getline mag anscheinend keine strings, sondern nur char-arrays?Richtig. Du sollst auch gar nicht cin.getline benutzen, sondern die freie Funktion getline, die in <string> deklariert ist. Die nimmt auch std::string. Und nehm ich ein char-array funktioniert der exit irgendwie nicht?Bedenke, was == bei Arrays tut. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.