c ++: noskipws verzögert das Ende der Dateierkennung für einige Datentypen

9

Was ich über noskipws weiß, deaktiviert das Überspringen von Leerstellen. Also muss man in seinem Programm weiße Leerzeichen mit ein paar Zeichen aufnehmen, wenn sie mit noskipws arbeiten wollen. Ich versuche, die Bedingung cin auf eof zu setzen, indem ich Strg + D <( Strg <+ kb> Z ) drücke für Windows). Aber wenn ich eine Eingabe char oder string verwende, dann wird der Stream mit einer einzigen Eingabe auf das Ende der Datei gesetzt. Wenn ich jedoch einen anderen Datentyp verwende, muss ich die Kombination zweimal drücken. Wenn ich die noskipws Anfrage lösche, funktioniert alles andere gut. Der folgende Code erklärt das Problem genauer:

%Vor%

Warum verhält sich cin so? Es wäre zwar nicht in der Lage, die Eingabe in die Variable int zu setzen, aber sie sollte zumindest sofort Flags auf eof setzen, wenn sie die Anfrage empfängt. Warum dauert es eine zweite Eingabe, auch nachdem der Benutzer Strg + Z ?

gedrückt hat     
Harshul Sharma 13.06.2016, 08:17
quelle

1 Antwort

0

Wenn noskipws verwendet wird, ist Ihr Code für die Extraktion von Leerstellen verantwortlich. Wenn Sie int lesen, schlägt es fehl, da Leerraum angetroffen wird.

Siehe ein Beispiel :

%Vor%

Oder visuelles Studio .

    
Marek R 20.11.2017 12:26
quelle

Tags und Links