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

Respuestas a la pregunta(1)

Su respuesta a la pregunta