Влияние noskipws на cin>>

Насколько я понимаю, оператор извлечения пропускает пробелы в начале и останавливается при обнаружении пробелов или конца потока. noskipws можно использовать, чтобы перестать игнорировать начальные пробелы.

У меня есть следующая программа, в которой я использовал 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;
}

Мои запросы:

  1. Если я ввожу «Джон» в качестве первого ввода, то вторая операция cin>> не ожидает ввода и ничего не копирует в место назначения, то есть в массив имен. Я ожидал, что второй cin>> будет передавать как минимум новую строку или конец потока, а не просто устанавливать пустую строку назначения. Почему это происходит ?

  2. То же самое наблюдается, когда я ввожу «Джон Смит» в качестве входных данных для первого оператора cin>>. Почему второй оператор cin>> не копирует пробел или «Смит» в целевую переменную?

Ниже приведен вывод программы:

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

Спасибо!!!

6
задан Achint Mehta 8 June 2012 в 10:03
поделиться