¿Cuándo se debe usar std::cin.getline()
? ¿Qué diferencia de std::cin
?std :: cin.getline() vs. std :: cin
Respuesta
En caso de que esté *, std::cin.getline
consiguiendo la línea, en lugar de std::cin
recibiendo la primera palabra.
¿Leyó alguna documentación (por ejemplo, http://www.cplusplus.com/reference/string/getline/)?
Básicamente, std::cin
(o más en general, cualquier std::istream
) se usa directamente para obtener una entrada formateada, p. int x; std::cin >> x;
. std::cin.getline()
se usa simplemente para llenar un buffer sin procesar char *
.
el miembro getline no obtiene un 'std :: string', se usa para llenar un búfer' char * '. La línea get que obtiene un 'std :: string' es la función gratuita' std :: getline'. – etarion
@Oli. Sí, vi la documentación por un tiempo pero no entendí la idea. Ahora, creo que es más claro. Gracias. – Simplicity
@etarion: Buena captura. Actualizando la respuesta ahora ... –
Tomemos std::cin.getline()
aparte. Primero, está el 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 un objeto así. 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. Por último, .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. Al final de una línea se llega a 2. No quedan caracteres en la entrada (no ocurre normalmente en std::cin
ya que puede seguir escribiendo) 3. Se lee la cantidad máxima de caracteres.
Existen otros métodos y funciones que se pueden utilizar con el objeto std::cin
, p.
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
- 1. ¿Por qué std :: cin.getline no tiene un método oveloaded para tomar std :: string?
- 2. std :: mem_fun vs std :: mem_fn
- 3. lectura una contraseña de std :: cin
- 4. Diferencia: cin.getline() y getline (cin, st)
- 5. std :: list vs std :: vector iteration
- 6. Diferencia: std :: runtime_error vs std :: exception()
- 7. std :: this_thread :: yield() vs std :: this_thread :: sleep_for()?
- 8. Rendimiento std :: strstr vs std :: string :: encontrar
- 9. std :: string :: longitud() vs. std :: string :: size()
- 10. std :: size_t vs size_t vs std :: string :: size_type
- 11. Rendimiento relativo de std :: vector vs. std :: list vs. std :: slist?
- 12. std :: string vs. char *
- 13. printf vs std :: cout
- 14. std :: hash_set vs std :: unordered_set, ¿son lo mismo?
- 15. arrojar nueva std :: excepción vs std :: excepción tiro
- 16. iterador avanzado para el std :: vector std :: advance VS operator +?
- 17. std :: atomic | compare_exchange_weak vs. compare_exchange_strong
- 18. std :: vector vs normal array
- 19. std :: mapa y std :: unordered_map
- 20. std :: async - std :: launch :: async | std :: launch :: deferred
- 21. std :: enable_if: parámetro vs template parámetro
- 22. google :: dense_hash_map vs std :: tr1 :: unordered_map?
- 23. struct con 2 celdas vs std :: pair?
- 24. C++: "std :: endl" vs libros "\ n"
- 25. Inicialización directa vs uniforme en std :: asignador
- 26. Rendimiento de qsort vs std :: sort?
- 27. Cómo manejar la evolución de C++ std :: namespace? por ejemplo: std :: tr1 :: shared_ptr vs. std :: shared_ptr vs. boost :: shared_ptr vs. boost :: tr1 :: shared_ptr
- 28. ¿Cuál es la diferencia entre std :: set y std :: vector?
- 29. std :: vector de std :: vectores de contigüidad
- 30. std :: stringstream y std :: ios :: binario
No entiendo esta respuesta. 'std :: cin' no obtiene nada; es solo un objeto. Tienes que hacer algo con eso (por ejemplo, llamar a una función de miembro como 'get') antes de que haga algo. –
'char s1 [256], s2 [256]; std :: cin >> s1; cin.getline (s2, 256); ' – alvelcom
' std :: cin >> s1' es una llamada a una función global 'istream & operator >> (istream &, char *)' –