Namespaces
Variants

std::basic_istream<CharT,Traits>:: getline

From cppreference.net
basic_istream & getline ( char_type * s, std:: streamsize count ) ;
(1)
basic_istream & getline ( char_type * s, std:: streamsize count, char_type delim ) ;
(2)

Extrae caracteres del flujo hasta el final de línea o el delimitador especificado delim .

La primera sobrecarga es equivalente a getline ( s, count, widen ( ' \n ' ) ) .

Se comporta como una UnformattedInputFunction . Después de construir y verificar el objeto sentry, extrae caracteres de * this y los almacena en ubicaciones sucesivas del array cuyo primer elemento está apuntado por s , hasta que ocurra cualquiera de las siguientes condiciones (evaluadas en el orden mostrado):

  1. se produce una condición de fin de archivo en la secuencia de entrada.
  2. el siguiente carácter disponible c es el delimitador, determinado por Traits :: eq ( c, delim ) . El delimitador se extrae (a diferencia de basic_istream::get() ) y se cuenta para gcount() , pero no se almacena.
  3. count no es positivo, o count - 1 caracteres han sido extraídos ( setstate ( failbit ) se llama en este caso).

Si la función no extrae ningún carácter, ​ failbit se establece en el estado de error local antes de que setstate() sea llamado.

En cualquier caso, si count > 0 , entonces almacena un carácter nulo CharT ( ) en la siguiente ubicación sucesiva del array y actualiza gcount() .

Contenidos

Notas

Debido a que la condición #2 se prueba antes que la condición #3, la línea de entrada que cabe exactamente en el búfer no activa failbit .

Debido a que el carácter de terminación se cuenta como un carácter extraído, una línea de entrada vacía no activa failbit .

Parámetros

s - puntero a la cadena de caracteres donde almacenar los caracteres
count - tamaño de la cadena de caracteres apuntada por s
delim - carácter delimitador para detener la extracción. Se extrae pero no se almacena.

Valor de retorno

* this

Excepciones

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Si una operación interna lanza una excepción, esta es capturada y badbit se establece. Si exceptions() está configurado para badbit , la excepción se relanza.

Ejemplo

#include <array>
#include <iostream>
#include <sstream>
#include <vector>
int main()
{
    std::istringstream input("abc|def|gh");
    std::vector<std::array<char, 4>> v;
    // nota: el siguiente bucle termina cuando std::ios_base::operator bool()
    // en el flujo devuelto por getline() retorna false
    for (std::array<char, 4> a; input.getline(&a[0], 4, '|');)
        v.push_back(a);
    for (auto& a : v)
        std::cout << &a[0] << '\n';
}

Salida:

abc
def
gh

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 531 C++98 std::getline no podía manejar el
caso donde count no es positivo
no se extrae ningún carácter
en este caso

Véase también

leer datos de un flujo de E/S a una cadena
(plantilla de función)
extrae datos formateados
(función miembro pública)
extrae caracteres
(función miembro pública)
extrae bloques de caracteres
(función miembro pública)