Efeito de noskipws no cin >>

Pelo que entendi, o operador de extração pula o espaço em branco no início e pára ao encontrar um espaço em branco ou fim do fluxo. Noskipws pode ser usado para parar de ignorar os principais espaços em branco.

Eu tenho o seguinte programa onde eu usei 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;
}

Minhas consultas são:

Se eu inserir "John" como a primeira entrada, a segunda operação cin não esperará pela entrada e não copia nada para o destino, ou seja, a matriz de nomes. Eu esperava que o segundo cin >> transferisse pelo menos uma nova linha ou fim de fluxo, em vez de apenas definir a cadeia de destino como vazia. Por que isso está acontecendo ?

A mesma coisa é observada quando eu digito "John Smith" como a entrada para a primeira instrução cin >>. Por que a segunda instrução cin não copia o espaço ou "Smith" para a variável de destino?

A seguir, a saída do programa:

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

Obrigado!!!

questionAnswers(1)

yourAnswerToTheQuestion