2011-01-20 26 views

Respuesta

18

En caso de que esté *, std::cin.getline consiguiendo la línea, en lugar de std::cin recibiendo la primera palabra.

+6

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. –

+1

'char s1 [256], s2 [256]; std :: cin >> s1; cin.getline (s2, 256); ' – alvelcom

+3

' std :: cin >> s1' es una llamada a una función global 'istream & operator >> (istream &, char *)' –

9

¿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 *.

+3

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

+0

@Oli. Sí, vi la documentación por un tiempo pero no entendí la idea. Ahora, creo que es más claro. Gracias. – Simplicity

+0

@etarion: Buena captura. Actualizando la respuesta ahora ... –

24

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 
Cuestiones relacionadas