c++ - funciona - getline en c
std:: cin.getline() vs. std:: cin (3)
¿Cuándo se debería std::cin.getline()
? ¿Qué diferencia de std::cin
?
¿Leyó alguna documentación (por ejemplo, http://www.cplusplus.com/reference/string/getline/ )?
Básicamente, std::cin
(o, en general, cualquier std::istream
) se usa directamente para obtener una entrada formateada, por ejemplo, int x; std::cin >> x;
int x; std::cin >> x;
. std::cin.getline()
se usa simplemente para llenar un búfer sin char *
.
En el caso de que char *, std::cin.getline
obtenga línea, en lugar de std::cin
obtener la primera palabra.
Tomemos std::cin.getline()
aparte. Primero, hay std::
. Este es el espacio de nombres en el que vive la biblioteca estándar. Tiene cientos de tipos, funciones y objetos.
std::cin
es tal objeto. Es el objeto de entrada de caracteres estándar, definido en <iostream>
. Tiene algunos métodos propios, pero también puede usarlo con muchas funciones gratuitas. La mayoría de estos métodos y funciones son formas de obtener uno o más caracteres de la entrada estándar.
Finalmente, .getline()
es uno de esos métodos de std::cin
(y otros objetos similares). Usted le dice cuántos caracteres debería obtener del objeto en su lado izquierdo ( std::cin
aquí), y dónde colocar esos caracteres. El número exacto de caracteres puede variar: .getline()
se detendrá en tres casos: 1. Se alcanza el final de una línea 2. No quedan caracteres en la entrada (no sucede normalmente en std::cin
como puede seguir escribiendo) 3. Se lee la cantidad máxima de caracteres.
Hay otros métodos y funciones que se pueden usar con el objeto std::cin
, por ejemplo
std::string s;
int i;
std::cin >> s; // Read a single word from std::cin
std::cin >> i; // Read a single number from std::cin
std::getline(std::cin, s); // Read an entire line (up to /n) from std::cin
std::cin.ignore(100); // Ignore the next 100 characters of std::cin