problemchen bei getline
-
hallo,
ok danke... des mit der fehlerabfrage hatte ich mal von irgendwo kopiert
übrigens klappt das in der konsolen-faq angegebenestd::cin.clear (); std::cin.ignore ( std::cin.rdbuf () -> in_avail () ); std::cin.get ();
zur abfrage einer eingabe vor dem schliessen mit meinem dev-cpp auch nicht. unter vc 6 gehts aber ohne probleme
edit:
und was bedeutet eigentlich die 2 beicin.ignore(2, '\n');
thx
grüsse steve
-
ignore(2, '\n') ignoriert die letzten beiden Zeichen im Stream bzw. bis zum ersten '\n'.
std::cin.clear (); std::cin.ignore ( std::cin.rdbuf () -> in_avail () ); std::cin.get ();
Bei mir funktioniert das, auch mit dem Dev-Cpp.
-
CarstenJ schrieb:
Bei mir funktioniert das, auch mit dem Dev-Cpp.
Da wo es nicht funktioniert, hilft in der Regel die Ersetzung der ignore-Zeile durch ein cin.sync();
-
ok danke!
grüsse steve
-
hi,
ich hab mein programm heut mal im vc 6 getestet, und da meckert er beimCarstenJ schrieb:
cin.ignore(numeric_limits<int>::max(), '\n');
is das jetzt n fehler im vc 6? wie krieg ichs denn am besten zum laufen, ich wollt das programm eigentlich möglichst kompatibel zu allen compilern machen
grüsse steve
-
Am besten postest du immer die Fehlermeldung dazu, sonst wirds schwierig mit Helfen. Hast du auch <limits> includiert? numeric_limits ist jedenfalls Standard.
-
hm achso limits brauche ich dafür...
ok, bloß wie gross ist die? ich brauch die eigentlich sonst ja nicht, und vielleicht wäre es praktischer dann ne andere methode zu nehmen, oder gehts anders nicht?grüsse steve
-
Ich glaube nicht, dass Limits deinen Programmrahmen sprengen wird. Es ist sicher und Standard. Wenn keine gravierenden Gründe dagegen sprechen, würde ich das drinlassen.
-
cin.ignore(cin.rdbuf()->in_avail());
wäre ja auch denkbar
-
Wenn ich das an der Stelle ersetze, gibts bei Eingabe eines Buchstabens eine Endlosschleife. Ist also nicht Idiotensicher