Mejor respuesta
cin.getline () le permite ingresar una cadena que también tiene espacios en blanco. Su sintaxis es la siguiente: cin.getline (nombre de la cadena, tamaño de la cadena); Considere el siguiente ejemplo: suponga que entro Hello World para str y strr. #include
int main()
{
char str[100]", strr[100];
cout<<"Enter the strings : ";
cin.getline( str, 100 ); //enter Hello World
cin>>strr; //enter Hello Word.
cout<
cout<
return 0;
}
Esta es la diferencia básica. cin no tiene en cuenta los espacios en blanco en la cadena, mientras que cin.getline sí los considera.
Respuesta
Este es uno de los problemas más comunes que enfrentan los estudiantes al usar getline () función.
En el momento en que ejecuta su programa, escribe Delhi y luego presiona la tecla Enter. Esta tecla de entrada no es más que el carácter de nueva línea . Los caracteres de espacio en blanco, como el espacio de tabulación y \ n, normalmente se ignoran (se omiten) cuando se ingresa un valor con cin.
Por lo general, se dejan caracteres adicionales en el flujo de entrada después de que supuestamente completado. A continuación, se pasan a la siguiente operación de entrada, aunque no estén destinados a ella. A menudo es un carácter de nueva línea que permanece atrás, pero a veces también quedan otros caracteres.
En su programa, este carácter de nueva línea sirve como entrada para la función getline (). Dado que esta función obtuvo su entrada, no le permite ingresar el valor. Debe deshacerse de este carácter y luego su programa funcionará absolutamente bien.
Para deshacerse de estos caracteres extraños, el ignore (MAX, DELIM) se usa la función miembro de la clase istream. Lee y desecha hasta MAX caracteres, incluido el carácter delimitador especificado. Utilice esta función antes de llamar a la función getline () como:
cin.ignore (1, "\ n");
Dado que los caracteres adicionales también pueden incluir espacios en blanco (por ejemplo, después de escribir Delhi , pones algo de espacio y luego presionas la tecla Intro), en lugar de 1, sería más seguro utilizar 10.
cin.ignore (10, "\ n");
No se preocupe por la clase istream. Se declara en el archivo de encabezado de IOSTREAM. Además , getline () también es una función miembro de la propia clase istream.