cin.getline()
-
Wenn ich bei folgendem Beispiel:
#include <iostream> using namespace std; const int SIZE=20; int main() { char a[SIZE]; char b[SIZE]; cin.getline(a,SIZE); a[SIZE-1]='\0'; cout << a << endl; cin.getline(b,SIZE); b[SIZE-1]='\0'; cout << b << endl; return 0; }Beim ersten "cin.getline(a,SIZE)" "WorteWorteWorteWorteWorte" (25 Zeichen) eingebe, dann müsste doch eigentlich "cin.getline(b.SIZE)" nicht mehr aufgerufen werden und die Ausgabe wäre dann:
WorteWorteWorteWorteWorte //meine Eingabe + ENTER
WorteWorteWorteWort // "e" wird abgeschnitten, wegen a[SIZE-1]='\0';
Worte // cout << b << endl; Das was noch im Pufer drin standAber komischerweise wird das letzte "Worte" nicht hingeschriben bei mir, da steht nur:
WorteWorteWorteWorteWorte //meine Eingabe + ENTER
WorteWorteWorteWortDoch nach meiner Logik müsste das doch zum Schluss nochmal das "Worte" kommen oder?
MfG
Stromberg
-
Sieht so aus als würde getline nicht nach deiner Logik arbeiten. Und deine Frage war jetzt ob getline nach deiner Logik so arbeitet wie beschrieben? Komische Frage, die Antwort hast du selbst gepostet...
-
Benutze lieber std::string und std::getline(std::istream &, std::string &, char delim='\n').
-
Ich glaub ich hab das was ich mein irgendwie falsch formuliert. Hab gemeint, das wenn man die max. Zeichenanzahl von cin.getline überschreitet, das dann ja noch n paar Zeichen im cin Puffer stehen müssen. Nur werden diese merkwürdigerweiße beim nächsten cin.getline nicht mehr ausgegeben.
aber am besten verwende ich getline für std::string.
MfG
Stromberg