std::basic_istream<CharT,Traits>:: read
|
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
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) |