Solución:
Hay un número equivalente de ventajas e inconvenientes y, fundamentalmente, todo depende de lo que esté leyendo: get()
deja el delimitador en la cola, lo que le permite considerarlo como parte de la siguiente entrada. getline()
lo descarta, por lo que la siguiente entrada será justo después.
Si está hablando del carácter de nueva línea de una entrada de consola, tiene mucho sentido descartarlo, pero si consideramos una entrada de un archivo, puede usar como “delimitador” el comienzo del siguiente campo.
Lo que es “bueno” o “seguro” de hacer depende de lo que esté haciendo.
cin.getline()
lee la entrada hasta ‘ n’ y se detiene
cin.get()
lee la entrada hasta ‘ n’ y mantiene ‘ n’ en la secuencia
Por ejemplo :
char str1[100];
char str2[100];
cin.getline(str1 , 100);
cin.get(str2 , 100);
cout << str1 << " "<<str2;
aporte :
1 2
3 4
salida 1 2 3 4 // la salida esperada
Cuando revertirlos
Por ejemplo :
char str1[100];
char str2[100];
cin.get(str2 , 100);
cin.getline(str1 , 100);
cout << str1 << " "<<str2;
aporte :
1 2
3 4
salida 1 2 // la salida no está expresada porque cin.getline () leyó el ‘ n’
get()
extrae char por char de una secuencia y devuelve su valor (convertido a un número entero) mientras que getline()
se utiliza para obtener una línea de un archivo línea por línea. Normalmente, getline se usa para filtrar delimitadores en aplicaciones en las que tiene un archivo plano (con miles de líneas) y desea extraer la salida (línea por línea) usando cierto delimitador y luego realizar alguna operación en él.