Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++: cin.get
Daniel666
20-02-2002, 20:03
Hallo
char text[5];
cin.get(text,4);
cin.get(text,4); sollte doch bewirken, dass der String "text" eingelesen wird, oder nicht? Bei mir ist das nämlich nicht der Fall, die Zeile wird anscheinend einfach ignoriert, also es passiert nichts, das Programm wird danach einfach beendet.
Gibt es da irgendwas zu beachten, das ich übersehen hab/nicht weiß, oder woran kann's liegen?
jgbauman
20-02-2002, 23:24
Ich weiss ja nicht was Du errechen willst, aber die Semantik von
cin.get(char *s, int n)
ist folgende:
Lese einzelne Zeichen aus cin und speichere sie hintereinader in s, bis eine der folgenden Bedingungen erfuellt ist.
- es wurden n-1 Zeichen gelesen.
- das naechste Zeichen waere '\n'
- das Dateiende ist erreicht.
Danach speichere ein abschliessendes '\0' in s.
Ich schaetze einfach das Du mehrmals mit cin.get() liest und da ein Aufruf von cin.get() ein '\n' im Eingabestrom niemals beseitig und immer mit 0 gelesenen Zeichen abbricht falls '\n' das naechste Zeichen, koennte das eine Erklaerung fuer deinen 'Fehler' sein.
Ein
if (cin.peek() == '\n') cin.get();
hinter jedem cin.get() koennte fuer Abhilfe sorgen.
Daniel666
21-02-2002, 14:41
Hallo
Also erreichen will ich damit eigentlich nichts, bin nur dabei mich mit C++ zu beschäftigen, und da kam mir dann dieses Problem.
Inzwischen habe ich auch die Lösung gefunden:
cin.get liest standardmäßig bis '\n' als Begrenzer eingegeben wird. Da ich die Funktion in ein Programm eingebaut hatte, hat er den Begrenzer immer aus dem Puffer gelesen und deshalb war also schon vor der eigentlichen Eingabe Schluss. Abhilfe brachte dann cin.ignore, liest ein Zeichen aus dem Puffer und "wirft" es dann weg.
Trotzdem danke für deine Hilfe.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.