[C++] Nerviges Prob mit cin und cin.getline()

Sinac

Erfahrenes Mitglied
Ahoi...
Habe son total bescheuertes Problem mit cin.getline()
Also da ich mit cin >> ja nur ein Wort zur Zeit einlesen
kann, wollte ich einfach cin.getline nehmen, wenn ich also
Code:
int main(){
	char Eins[256], Zwei[256];
      cout << "Satz Eins: ";
	cin.getline (Eins,256);
	cout << "Satz Zwei: ";
	cin.getline (Zwei,256);
	cout << Eins << Zwei << endl;
Nehme, ist alles kein Ding.

Wenn cih aber cin vorher schonmal benutze
Code:
int main(){
	char Eins[256], Zwei[256];
      int zahl;
      cout << "Zahl:";
      cin >> Zahl;
      cout << "Satz Eins: ";
	cin.getline (Eins,256);
	cout << "Satz Zwei: ";
	cin.getline (Zwei,256);
	cout << Eins << Zwei << Zahl << endl;
Probiere, wird die 2. Eingabe, also von Eins übersprungen
und es kommt gleich Zwei...

Hab schon alles probiert und gegooglet bis zum k*tzen!!!

Greetz...
Sinac
 
Das gleiche Problem hatte ich auch mal.
Nimm davor einfach fflush() oder cin.flush() her.
Dass müsste dann so aussehen:

Code:
int main(){
	char Eins[256], Zwei[256];
      cout << "Satz Eins: ";fflush();
	cin.getline (Eins,256);fflush();
	cout << "Satz Zwei: ";fflush();
	cin.getline (Zwei,256);fflush();
	cout << Eins << Zwei << endl;
}

Probers mal damit. Wenn nicht *****, dann checks wie oben mit cin.flush() aus. Mehr kann ich dir leider auch nicht sagen.
 
ok, werd ich Montag gleich mal probieren!
*** erstma!
Hat vielleicht auch jemand ne Erklärung warum das so ist?
Ist imma blöd wenn man was löst aber im Prinzip nix dabei
gelernt hat!

Greetz & a nice, fuckin' Weekend!
.:Sinac:.
 
Ich kanns dir auch erklären:

cin und cin.getline arbeiten mit Inputstreams und weil du ja da schon was eingegeben hast, denkt C++ dass das nächste cin (oder auch cin.getline) schon die Eingabe hat, also überspringt er ihn einfach.
Denk ich mal :)
 
moin


"cin" liesst bis zu einem Leerzeichen oder einem "\n".
"cin.getline" liesst bis zu einem "\n".

Wenn man also eine Eingabe per "cin" macht z.B. "Hallo du" und dann per Enter bestätigt, wird Hallo per "cin" gespeichert und der Rest bleibt im Puffer. Wenn man dann "cin.getline" aufruft, wird der Puffer erstmal in "cin.getline" geschrieben und das inklusive dem Enter "\n" deshalb denkt "cin.getline" das die Eingabe beendet ist.


mfg
umbrasaxum
 
Hallo, bei mir führt er cin.getline nicht aus,
wird gar nicht kompiliert.
Ihm fehlt ne function oder sowat sagt der da.
Muss man für cin.getline noch ne Bibliothek mit einbinden?
 
moin


Dafür musst du die iostream(.h) einbinden.
Und ohne genaue Fehlerbeschreibung welche Funktion fehlt wird dir keiner großartig helfen können.


mfg
umbrasaxum
 

Neue Beiträge

Zurück