"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo leer bytes de archivo en una matriz de caracteres en C++ sin getline()?

¿Cómo leer bytes de archivo en una matriz de caracteres en C++ sin getline()?

Publicado el 2024-11-08
Navegar:594

How to Read File Bytes into a Char Array in C   Without getline()?

Cómo recuperar bytes de archivos en una matriz de caracteres en C

Para leer bytes de archivos en una matriz de caracteres sin usar getline(), considere usando ifstream::read(). Siga estos pasos:

  1. Abra el archivo:

    std::ifstream infile("C:\\MyFile.csv");
  2. Obtener longitud del archivo:

    infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);
  3. Asegurar el tamaño del búfer:

    if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }
  4. Leer el archivo:

    infile.read(buffer, length);

Notas adicionales:

  • Se recomienda abrir el archivo en modo binario (por ejemplo, con std::ios_base::binary) para un manejo preciso de bytes.
  • Si bien seekg() y tellg() son generalmente confiables, es posible que no siempre proporcionen el tamaño de archivo exacto en algunos casos.
  • Para leer el archivo completo en una sola operación y manejar archivos grandes, use std::vector y std::istreambuf_iterator pueden ofrecer más flexibilidad.

Enfoque actualizado (2019):

Para tener en cuenta posibles errores durante la lectura, considere el siguiente enfoque:

size_t chars_read;

if (!(infile.read(buffer, sizeof(buffer)))) {
    if (!infile.eof()) {
        // Handle error during reading
    }
}

chars_read = infile.gcount(); // Get actual number of bytes read
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3