Maison > développement back-end > C++ > le corps du texte

Comment lire efficacement tous les octets d'un fichier dans un tableau de caractères en C ?

Patricia Arquette
Libérer: 2024-11-02 02:16:30
original
538 Les gens l'ont consulté

How to Efficiently Read All Bytes from a File into a Character Array in C  ?

Comment récupérer tous les octets d'un fichier dans un tableau de caractères en C

Étant donné un fichier situé dans "C:MyFile.csv" et un tampon de tableau de caractères de taille 10 000, comment pouvez-vous lire efficacement tous les octets du fichier dans le tampon ?

Considérez l'approche suivante, ce qui est généralement préféré à l'utilisation de getline() dans ce scénario :

<code class="cpp">// Open the file in binary mode to preserve byte-by-byte fidelity
std::ifstream infile("C:\MyFile.csv", std::ios_base::binary);

// Determine the file's size
infile.seekg(0, std::ios::end);
size_t file_size = infile.tellg();
infile.seekg(0, std::ios::beg);

// Ensure that the buffer is of sufficient size
if (file_size > sizeof(buffer)) {
    // Handle the case where the file exceeds the buffer's capacity
}

// Read the entire file's contents into the buffer
infile.read(buffer, file_size);

// Obtain the actual number of bytes read from the file
std::streamsize bytes_read = infile.gcount();</code>
Copier après la connexion

Notes supplémentaires :

  • Utilisation de seekg() et tellg() pour déterminer la taille du fichier est généralement fiable mais non garantie, pensez donc à gérer les erreurs supplémentaires.
  • Si le fichier est ouvert en mode non binaire, certaines traductions de caractères peuvent se produire, ce qui peut entraîner une différence entre la taille du fichier et le nombre d'octets finalement stockés dans le tampon.
  • Pour les fichiers plus volumineux ou les cas où vous préférez des tampons redimensionnables, envisagez d'utiliser std::vector et std::istreambuf_iterator pour un fichier plus efficace. lecture.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!