Namespaces
Variants

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

From cppreference.net
basic_istream & read ( char_type * s, std:: streamsize count ) ;

Extrae caracteres del flujo.

Se comporta como una UnformattedInputFunction . Después de construir y verificar el objeto sentry, extrae caracteres y los almacena en ubicaciones sucesivas del array de caracteres cuyo primer elemento está apuntado por s . Los caracteres se extraen y almacenan hasta que ocurra cualquiera de las siguientes condiciones:

  • count caracteres fueron extraídos y almacenados.
  • se produce una condición de fin de archivo en la secuencia de entrada (en cuyo caso, setstate ( failbit | eofbit ) es llamado). El número de caracteres extraídos exitosamente puede consultarse usando gcount() .

Contenidos

Parámetros

s - puntero al array de caracteres donde almacenar los caracteres
count - número de caracteres a leer

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.

Notas

Al utilizar una configuración regional no convertidora (la configuración regional predeterminada es no convertidora), el reemplazo de esta función en std::basic_ifstream puede optimizarse para E/S masiva de copia cero (mediante el reemplazo de std::streambuf::xsgetn ).

Ejemplo

#include <cstdint>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
int main()
{
    // read() se usa frecuentemente para E/S binaria
    std::string bin = {'\x12', '\x12', '\x12', '\x12'};
    std::istringstream raw(bin);
    std::uint32_t n;
    if (raw.read(reinterpret_cast<char*>(&n), sizeof n))
        std::cout << std::hex << std::showbase << n << '\n';
    // preparar archivo para el siguiente fragmento
    std::ofstream("test.txt", std::ios::binary) << "abcd1\nabcd2\nabcd3";
    // leer archivo completo en string
    if (std::ifstream is{"test.txt", std::ios::binary | std::ios::ate})
    {
        auto size = is.tellg();
        std::string str(size, '\0'); // construir string al tamaño del stream
        is.seekg(0);
        if (is.read(&str[0], size))
            std::cout << str << '\n';
    }
}

Salida:

0x12121212
abcd1
abcd2
abcd3

Véase también

inserta bloques de caracteres
(función miembro pública de std::basic_ostream<CharT,Traits> )
extrae datos formateados
(función miembro pública)
extrae bloques de caracteres ya disponibles
(función miembro pública)
extrae caracteres
(función miembro pública)
extrae caracteres hasta encontrar el carácter especificado
(función miembro pública)
lee de un archivo
(función)