Cita de: MAFUS en 8 Marzo 2017, 12:23 PMPara std::string, sí. Para char*, entonces será:
Supongo que, al igual que scanf, cin usa los espacios en blanco como separadores de datos. Cuando encuentra uno cree que ha llegado al final de la cadena esperada.
En C++, creo que para adquirir una cadena con espacios es conCódigo (c++) [Seleccionar]std::getline(std::cin, mi_cadena);
Código (cpp) [Seleccionar]
cin.getline(cadena, tamaño_cadena); // Lee hasta '\n'
// O
cin.getline(cadena, tamaño_cadena, caracter_delimitador); // Lee hasta el delimitador
O sea:
Código (cpp) [Seleccionar]
cin.getline(nombre, 40);