Lisez un fichier dans un tableau en C ++

Lisez un fichier dans un tableau en C ++
La lecture de l'ensemble du fichier dans un tableau n'est pas aussi difficile que cela puisse paraître. Un fichier, que ce soit du texte ou autre, se compose d'octets depuis le début à la fin. Les octets peuvent être lus comme des personnages. Les personnages peuvent être lus un par un dans le tableau.

Cet article explique comment lire un fichier entier dans un tableau. L'en-tête C ++ (bibliothèque) fstream, a la classe ifstream. La classe ifstream a obtenu des fonctions de membre surchargées. Deux de ces fonctions de membre surchargées peuvent être utilisées pour lire le fichier entier dans un tableau. Un programme pour une telle lecture devrait commencer:

#inclure
#inclure
Utilisation de Namespace Std;

Les deux premières lignes sont des directives, pas des déclarations. Le premier comprend la bibliothèque fstream pour les fonctions get (). Le second comprend la bibliothèque iOStream pour imprimer au terminal (console) et pour recevoir des caractères du clavier. La troisième ligne est une déclaration. Il insiste sur le fait que tout nom non précédé de «std ::» est de l'espace de noms standard.

Il y a un petit problème avec les fonctions get (), la longueur du tableau doit être estimée, pour être au moins un caractère de plus que le nombre de caractères dans le fichier. L'idée est d'avoir «\ 0» inclus juste après que le dernier caractère lu dans le tableau formerait une longue chaîne.

Si la longueur du tableau ne peut pas être estimée en tant que telle, alors le fichier entier doit être lu dans un autre objet tel qu'un objet String (de la classe de chaîne). Puisque l'objectif de cet article est d'expliquer comment lire dans un tableau, la taille du tableau doit être estimée.

Pour le reste de cet article, il est supposé que le nom du fichier, dont le contenu doit être lu, est txtfile.txt, dans le répertoire, dir1, dans le répertoire domestique / utilisateur.

Contenu de l'article

- Lire des caractéristiques de fichier entier par personnage

- Lire un fichier entier avec une fonction membre

- Conclusion

Lire des caractéristiques de fichier entier par personnage

La syntaxe de la fonction GET () surchargée ifstream, pour cela, est:

Basic_istream& get (char_type & c);

Un segment de code de programme pour lire le caractère suivant dans le fichier est:

Char C;
Char Arr [100];
int i = 0;
tandis que (ifs.get (c))
arr [i] = c;
i ++;

La première déclaration déclare la variable, C recevra chacun des caractères. La deuxième déclaration déclare le tableau qui recevra tous les personnages, un par un. La troisième ligne déclare un index pour le tableau commençant à partir de zéro pour aborder tous les éléments du tableau, qui recevra un caractère. Avec cette approche, '\ 0' peut être ajoutée après que le dernier caractère du fichier a été inclus dans le tableau.

Les parenthèses de la boucle while,

ifs.obtenir (c)

où ifs est le nom de l'objet ifstream. Le caractère suivant du fichier est obtenu par la fonction Get Member et affecté à C. Après cela, le pointeur interne de l'objet ifstream pointerait vers le personnage après celui-ci lu. Lorsque la fin de fichier est atteinte, l'expression «IFS.obtenir (c) ”devient faux au lieu de vrai et donc la boucle while se termine.

Le programme suivant lira tous les caractères d'un fichier et imprimera tout le contenu du terminal:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

ifStream ifs = ifStream ("dir1 / txtfile.txt ", ios_base :: in);
if (ifs.is_open () == true)
Char C; int i = 0; Char Arr [100];
tandis que (ifs.get (c))
arr [i] = c;
i ++;

ifs.fermer(); arr [i] = '\ 0'; couter<
autre
couter<< "File could not be open!" <retour 0;

ifstream comme codé, ouvre le fichier pour la lecture.

Lire un fichier entier avec une fonction membre

La fonction de membre GET () surchargée ifstream pour lire le fichier entier, sans la boucle while, est:

Basic_istream& get (char_type * s, streamSize n, char_type Delim);

Il lit toujours l'ensemble du fichier caractérisé par personnage, mais ce n'est plus l'entreprise du programmeur C ++. De plus, cette fonction ajoute le caractère nul, '\ 0' au nom du programmeur, en supposant que N est au moins un caractère plus long que le contenu du fichier.

Le premier argument de cette fonction Get () surchargée est le tableau avec les mêmes contraintes (y compris l'estimation) que le tableau ci-dessus pour recevoir tous les caractères du fichier. Le deuxième argument, n, du type StreamSize est une estimation du nombre de caractères dans le fichier. Il est conseillé de faire la taille du tableau et n, le même. Il n'y a pas besoin d'une boucle de temps avec cette fonction membre.

Maintenant, une ligne dans un fichier texte se termine par la séquence d'évasion, '\ n'. Si le troisième argument est '\ n', alors seule la première ligne du fichier serait lue. Ainsi, la fonction doit être trompée avec tout caractère qui ne sera probablement pas trouvé dans le contenu du fichier. Un bon candidat pour le troisième argument, est '\ 0'. Avec cette fonction de membre surchargé, le programmeur doit avoir une certaine connaissance des caractères possibles dans le fichier afin de ne pas utiliser un caractère qui fait partie du contenu du fichier.

Le programme suivant lira tous les caractères d'un fichier avec une instruction et imprimera tout le contenu du terminal:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

ifStream ifs = ifStream ("dir1 / txtfile.txt ", ios_base :: in);
if (ifs.is_open () == true)
Char Arr [100];
ifs.get (arr, 100, '\ 0');
ifs.fermer(); couter<
autre
couter<< "File could not be open!" <retour 0;

Conclusion

Un fichier entier peut être lu dans un tableau. Cela a tout d'abord besoin de la classe C ++ Ifstream de la bibliothèque FStream. Le fichier doit être ouvert pour lire. Pour lire tous les caractères (octets) d'un fichier (un par un) dans le tableau utilisez la fonction membre ifstream,

Basic_istream& get (char_type & c)

comme l'état dans un moment en boucle. Pour lire tous les caractères (octets) d'un fichier, dans le tableau avec une fonction de membre IFSTREAM sans la boucle While, la fonction de membre IFstream doit être:

Basic_istream& get (char_type * s, streamSize n, char_type Delim);

N'oubliez pas de tromper la fonction au troisième argument. Avec cette fonction, le programmeur doit avoir une certaine connaissance des caractères possibles dans le fichier.