Efekt noskipws na cin >>

Jak rozumiem, operator ekstrakcji pomija białe znaki na początku i zatrzymuje się po napotkaniu spacji lub końca strumienia. Noskipws można użyć do zaprzestania ignorowania wiodących białych znaków.

Mam następujący program, w którym użyłem noskipws.

#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;
}

Moje zapytania to:

Jeśli wprowadzę „John” jako pierwsze wejście, to druga operacja cin >> nie czeka na wejście i nie kopiuje niczego do miejsca docelowego, tj. Tablicy nazw. Spodziewałem się, że drugie cin >> przeniesie co najmniej nowy wiersz lub koniec strumienia, zamiast po prostu ustawić ciąg docelowy na pusty. Dlaczego to się dzieje ?

To samo obserwuje się, gdy wprowadzam „John Smith” jako dane wejściowe dla pierwszego wyrażenia cin >>. Dlaczego druga instrukcja cin >> nie kopiuje spacji lub „Smitha” do zmiennej docelowej?

Poniżej przedstawiono dane wyjściowe programu:

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

Dzięki!!!

questionAnswers(1)

yourAnswerToTheQuestion