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