Comment lire un fichier Char par Char en C++
-
Utiliser la méthode
ifstream
etget
pour lire un fichierchar
parchar
-
Utiliser la fonction
getc
pour lire le fichier char par char -
Utiliser la fonction
fgetc
pour lire les fichiers de type Char par Char
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;
}
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