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!!!