[ Web Proxy ]
URL:
Viewing: http://es.cppreference.com/cpp/string/basic_string/getline [Back]  [Original]

std::getline - cppreference.com
cppreference.com
Espacios de nombres
Variantes

std::getline

De cppreference.com
 
 
 
std::basic_string
 
Definido en el archivo de encabezado <string>
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input,
                                           std::basic_string<CharT,Traits,Allocator>& str,
                                           CharT delim );
(1)
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input,
                                           std::basic_string<CharT,Traits,Allocator>& str,
                                           CharT delim );
(1) (desde C++11)
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input,
                                           std::basic_string<CharT,Traits,Allocator>& str );
(2)
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input,
                                           std::basic_string<CharT,Traits,Allocator>& str );
(2) (desde C++11)

getline lee los caracteres de una secuencia de entrada y los coloca en una cadena:

1) Se comporta como una funcin de entrada sin formato, UnformattedInputFunction, excepto que input.gcount() no se ve afectada. Despus de construir y comprobar el objeto centinela, realiza lo siguiente:
1) Llama a str.erase();
2) Extrae caracteres de input y los aade a str hasta que ocurre una de las siguientes situaciones (comprobadas en el orden indicado):
a) existe la condicin de fin de archivo en input, en cuyo caso getline establece eofbit.
b) el siguiente carcter de entrada disponible es delim, como si se hubiera probado mediante Traits::eq(c, delim), en cuyo caso el carcter delimitador se extrae de input, pero no se aade a str.
c) se han almacenado str.max_size() caracteres, en cuyo caso getline establece failbit y retorna.
3) Si no se extrajeron caracteres por alguna razon (ni siquiera el delimitador descartado), getline establece failbit y retorna.
2) Lo mismo que getline(input, str, input.widen('\n')), es decir, el delimitador por defecto es el carcter fin de lnea.

Parmetros

input - El flujo del cual obtener los datos.
str - La cadena en la cual poner los datos.
delim - El carcter delimitador.

Valor de retorno

input

Notas

Al consumir una entrada delimitada por espacios en blanco (p. ej., int n; std::cin >> n;) cualquier espacio en blanco que siga, incluyendo el carcter de nueva lnea, se dejar en el flujo de entrada. Entonces, al cambiar a entrada orientada a lneas, la primer lnea que se recupere con getline ser solamente ese espacio en blanco. En el dado caso que esto sea comportamiento no deseado, las posibles soluciones incluyen:

  • hacer una llamada inicial explcita superflua a getline;
  • eliminar espacios en blanco consecutivos con std::cin >> std::ws;
  • ignorar todos los caracteres restantes en la lnea de entrada con cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Ejemplo

El siguiente ejemplo demuestra cmo usar la funcin getline para leer la entrada del usuario y cmo procesar un archivo/fichero lnea por lnea.

#include <string>
#include <iostream>
#include <sstream>
 
int main()
{
    // saludar al usuario
    std::string nombre;
    std::cout << "Cual es tu nombre? ";
    std::getline(std::cin, nombre);
    std::cout << "Hola " << nombre << ", encantado(a) de conocerte.\n";
 
    // leer un archivo/fichero lnea por lnea
    std::istringstream input;
    input.str("1\n2\n3\n4\n5\n6\n7\n");
    int suma = 0;
    for (std::string line; std::getline(input, line); ) {
        suma += std::stoi(line);
    }
    std::cout << "\La suma es: " << suma << "\n";
}

Posible salida:

Cual es tu nombre? Aquiles Pinto Flores
Hola Aquiles Pinto Flores, encantado(a) de conocerte.

La suma es 28

Vase tambin

Extrae caracteres hasta que se encuentra el carcter dado.
(funcin miembro pblica de std::basic_istream) [editar]

Web Proxy Viewer  |  New URL  |  Original Page