Wirkung von Noskipws auf cin >>

Soweit ich weiß, überspringt der Extraktionsoperator den Whitespace am Anfang und stoppt, wenn er auf einen Whitespace oder ein Ende des Streams trifft. Mit noskipws können Sie verhindern, dass führende Leerzeichen ignoriert werden.

Ich habe das folgende Programm, in dem ich noskipws verwendet habe.

#include <iostream>
using namespace std;

int main()
{
    char name[128];

    cout<<"Enter a name ";
    cin>>noskipws>>name;
    cout<<"You entered "<<name<<"\n";

    cout<<"Enter another name ";
    cin>>name;
    cout<<"You entered "<<(int)name[0]<<"\n";

    return 0;
}

Meine Fragen sind:

Wenn ich "John" als erste Eingabe eingebe, wartet die zweite cin >> -Operation nicht auf die Eingabe und kopiert nichts zum Ziel, d. H. Zum Namensarray. Ich habe erwartet, dass second cin >> mindestens eine neue Zeile oder ein Ende des Streams überträgt, anstatt nur die Zielzeichenfolge auf leer zu setzen. Warum passiert dies ?

Dasselbe wird beobachtet, wenn ich "John Smith" als Eingabe für die erste cin >> -Anweisung eingebe. Warum kopiert die zweite cin >> -Anweisung das Leerzeichen oder "Smith" nicht in die Zielvariable?

Es folgt die Ausgabe des Programms:

Enter a name John
You entered John
Enter another name You entered 0


Enter a name John Smith
You entered John
Enter another name You entered 0

Vielen Dank!!!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage