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