Efecto de noskipws en cin >>
Según tengo entendido, el operador de extracción omite los espacios en blanco al principio y se detiene al encontrar un espacio en blanco o al final de la secuencia. noskipws puede usarse para dejar de ignorar los espacios en blanco iniciales.
Tengo el siguiente programa donde he usado 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;
}
Mis consultas son:
Si ingreso "John" como la primera entrada, entonces la segunda operación cin >> no espera la entrada y no copia nada al destino, es decir, la matriz de nombres. Esperaba que la segunda cin >> transfiriera al menos una nueva línea o el final de la transmisión, en lugar de simplemente configurar la cadena de destino en vacío. Por qué está pasando esto ?
Lo mismo se observa cuando ingreso "John Smith" como entrada para la primera declaración de cine >>. ¿Por qué la segunda declaración cin >> no copia el espacio o "Smith" en la variable de destino?
A continuación se muestra la salida del 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
¡¡¡Gracias!!!