Comment lire un fichier Char par Char en C++

Jinku Hu 12 octobre 2023
  1. Utiliser la méthode ifstream et get pour lire un fichier char par char
  2. Utiliser la fonction getc pour lire le fichier char par char
  3. Utiliser la fonction fgetc pour lire les fichiers de type Char par Char
Comment lire un fichier Char par Char en C++

Cet article explique plusieurs méthodes de lecture d’un fichier texte char par char en C++.

Utiliser la méthode ifstream et get pour lire un fichier char par char

La façon la plus courante de traiter les entrées/sorties de fichiers à la manière du C++ est d’utiliser std::ifstream. Au début, un objet ifstream est initialisé avec l’argument du nom du fichier qui doit être ouvert. Notez que l’instruction if vérifie si l’ouverture d’un fichier a réussi. Ensuite, nous utilisons la fonction intégrée get pour récupérer le texte à l’intérieur du fichier char par char et les push_back dans le conteneur vector. Enfin, nous fournissons des éléments vectoriels à la console à des fins de démonstration.

#include <fstream>
#include <iostream>
#include <vector>

using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
using std::vector;

int main() {
  string filename("input.txt");
  vector<char> bytes;
  char byte = 0;

  ifstream input_file(filename);
  if (!input_file.is_open()) {
    cerr << "Could not open the file - '" << filename << "'" << endl;
    return EXIT_FAILURE;
  }

  while (input_file.get(byte)) {
    bytes.push_back(byte);
  }
  for (const auto &i : bytes) {
    cout << i << "-";
  }
  cout << endl;
  input_file.close();

  return EXIT_SUCCESS;
}

Utiliser la fonction getc pour lire le fichier char par char

Une autre méthode pour lire un fichier char par char est d’utiliser la fonction getc, qui prend le flux FILE* comme argument et lit le caractère suivant si disponible. Ensuite, le flux du fichier d’entrée doit être itéré jusqu’à ce que le dernier char soit atteint, et cela est implémenté avec la fonction feof, qui vérifie si la fin du fichier a été atteinte. Notez qu’il est toujours recommandé de fermer les flux de fichiers ouverts une fois qu’ils ne sont plus nécessaires.

#include <fstream>
#include <iostream>
#include <vector>

using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
using std::vector;

int main() {
  string filename("input.txt");
  vector<char> bytes;

  FILE* input_file = fopen(filename.c_str(), "r");
  if (input_file == nullptr) {
    return EXIT_FAILURE;
  }

  unsigned char character = 0;
  while (!feof(input_file)) {
    character = getc(input_file);
    cout << character << "-";
  }
  cout << endl;
  fclose(input_file);

  return EXIT_SUCCESS;
}

Utiliser la fonction fgetc pour lire les fichiers de type Char par Char

fgetc est une méthode alternative à la fonction précédente, qui implémente exactement la même fonctionnalité que fgetc. Dans ce cas, la valeur de retour de fgetc est utilisée dans l’instruction if puisqu’elle retourne le EOF si la fin du flux de fichiers est atteinte. Comme recommandé, avant de quitter le programme, nous fermons le flux avec un appel fclose.

#include <fstream>
#include <iostream>
#include <vector>

using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
using std::vector;

int main() {
  string filename("input.txt");
  vector<char> bytes;

  FILE* input_file = fopen(filename.c_str(), "r");
  if (input_file == nullptr) {
    return EXIT_FAILURE;
  }

  int c;
  while ((c = fgetc(input_file)) != EOF) {
    putchar(c);
    cout << "-";
  }
  cout << endl;
  fclose(input_file);

  return EXIT_SUCCESS;
}
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ File