Eingabe eines ganzen Text mit cin?
-
Hallo,
Und wieder ein neues Problem :). Ich hoffe ich nerve euch nicht.
Zwar, hab ich ein Problem beim einlesen von Variablen mit dem cin befehl.
Beispiel:
cout << "Eingabe 1: ";
cin >> eingabe1;
cout << "\nEingabe 2: ";
cin >> eingabe2;
cout << "\nEingabe 3: ";
cin >> eingabe3;Irgendwie bleibt er nicht bei den einzelnen Punkte stehen wenn man ein Satz bei eingabe1 eingibt. Er behandelt die wörter vom text als einzelne variablen und weißt sie zu eingabe2 und eingabe3 zu. Kann man kein ganzen Text eingeben?
Gruss,
Cyrill
-
DragonShaolin schrieb:
Kann man kein ganzen Text eingeben?
Doch. Mit getline [1] [2] zum Beispiel.
Eventuell in diesem Kontext zu beachten ist, dass das Terminierungszeichen im Puffer stehen bleibt und du so bei weiteren Eingaben mit getline() gegebenenfalls den Puffer leeren musst.
Caipi
-
wenn du bei getline noch ein Trennzeichen eingibst, liest er bis dorthin und verwirft das trennzeichen dann (also auch nix puffer leeren)
-
pumuckl schrieb:
wenn du bei getline noch ein Trennzeichen eingibst, liest er bis dorthin und verwirft das trennzeichen dann (also auch nix puffer leeren)
Ja. Hast natürlich recht. War etwas abgelenkt beim schreiben
.
Ich meinte dass man bei folgendem Fall eventuell vor getline() den Puffer leeren sollte.string s1, s2; cin >> s1; getline(cin, s2);Caipi
-
Joa, die Probleme mit der Eingabe durch std::cin sind bekannt - ich hab vor ner Weile mal ne Funktionstemplate geschrieben, die in den meisten Fällen genau das macht, was man will: http://www.dev-geeks.org/index.php?module=scripts&sub=2&action=show&id=50
Liest zeilenweise ein, versucht dann den input zu parsen - wo das nicht hinhaut, wird die Eingabe wiederholt. Wo das nicht ausreicht/genau passt - das Prinzip sollte eigentlich ziemlich leicht verständlich und auf besondere Bedürftnisse anpassbar sein.