Maison > développement back-end > C++ > Comment lire des octets de fichier dans un tableau de caractères en C sans getline() ?

Comment lire des octets de fichier dans un tableau de caractères en C sans getline() ?

Linda Hamilton
Libérer: 2024-11-02 22:51:02
original
962 Les gens l'ont consulté

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

Comment récupérer des octets de fichier dans un tableau de caractères en C

Pour lire des octets de fichier dans un tableau de caractères sans utiliser getline(), pensez en utilisant ifstream::read(). Suivez ces étapes :

  1. Ouvrez le fichier :

    <code class="cpp">std::ifstream infile("C:\MyFile.csv");</code>
    Copier après la connexion
  2. Obtenez la longueur du fichier :

    <code class="cpp">infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);</code>
    Copier après la connexion
  3. Assurer la taille du tampon :

    <code class="cpp">if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }</code>
    Copier après la connexion
  4. Lire le fichier :

    <code class="cpp">infile.read(buffer, length);</code>
    Copier après la connexion

Notes supplémentaires :

  • Ouverture du fichier en mode binaire (par exemple, avec std::ios_base:: binaire) est recommandé pour une gestion précise des octets.
  • Bien que seekg() et tellg() soient généralement fiables, ils peuvent ne pas toujours fournir la taille exacte du fichier dans certains cas.
  • Pour lire l'intégralité du fichier en une seule opération et en gérant des fichiers volumineux, l'utilisation de std::vector et std::istreambuf_iterator peut offrir plus de flexibilité.

Approche mise à jour (2019) :

Pour tenir compte des erreurs potentielles lors de la lecture, envisagez l'approche suivante :

<code class="cpp">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</code>
Copier après la connexion

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!

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