"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como ler bytes de arquivo em um array de caracteres em C++ sem getline ()?

Como ler bytes de arquivo em um array de caracteres em C++ sem getline ()?

Publicado em 2024-11-08
Navegar:459

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

Como recuperar bytes de arquivo em um array de caracteres em C

Para ler bytes de arquivo em um array de caracteres sem usar getline(), considere usando ifstream::read(). Siga estas etapas:

  1. Abra o arquivo:

    std::ifstream infile("C:\\MyFile.csv");
  2. Obter comprimento do arquivo:

    infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);
  3. Garantir o tamanho do buffer:

    if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }
  4. Leia o arquivo:

    infile.read(buffer, length);

Notas adicionais:

  • Abrir o arquivo no modo binário (por exemplo, com std::ios_base::binary) é recomendado para manipulação precisa de bytes.
  • Embora seekg() e Tellg() sejam geralmente confiáveis, eles nem sempre fornecem o tamanho exato do arquivo em alguns casos.
  • Para ler o arquivo inteiro em uma operação e manipular arquivos grandes, usando std::vector e std::istreambuf_iterator pode oferecer mais flexibilidade.

Abordagem atualizada (2019):

Para considerar possíveis erros durante a leitura, considere a seguinte abordagem:

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
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3