file input output operations c
Une étude sur les opérations d'entrée-sortie de fichier et les fonctions de pointeur de fichier en C ++.
Dans la programmation en temps réel, nous traitons de gros morceaux de données qui ne peuvent pas être pris en charge par les périphériques d'entrée-sortie standard. Par conséquent, nous devons utiliser le stockage secondaire pour stocker les données. En utilisant le stockage secondaire, nous stockons généralement les données sous forme de fichiers.
Nous pouvons lire des données à partir de fichiers ou écrire des données dans des fichiers en utilisant une séquence de données appelées flux au format texte ou binaire. Il existe diverses entrées / sorties et autres opérations liées aux fichiers en C ++. Ce tutoriel explique ces opérations liées aux fichiers à l'aide de différentes classes.
=> Visitez ici pour la série de didacticiels de formation C ++ exclusive.
Ce que vous apprendrez:
Classes d'entrée / sortie de fichier en C ++
Nous avons vu une classe iostream en C ++ qui définit les fonctionnalités d'entrée et de sortie standard, y compris cin et cout. Cette classe est limitée aux périphériques d'entrée et de sortie standard comme le clavier et le moniteur respectivement.
En ce qui concerne les opérations sur les fichiers, C ++ a un ensemble différent de classes qui peuvent être utilisées.
Ces classes sont décrites ci-dessous:
- Ofstream: Classe de gestion de fichier qui signifie le flux de fichier de sortie et est utilisée pour écrire des données dans des fichiers.
- Ifstream: Classe de gestion de fichier qui signifie le flux de fichier d'entrée et est utilisée pour lire les données du fichier.
- Fstream: Classe de gestion de fichiers qui a la capacité de gérer à la fois ifstream et ofstream. Il peut être utilisé pour lire et écrire dans un fichier.
Les opérations suivantes sont prises en charge dans la gestion des fichiers C ++:
- Ouvrir un fichier
- Fermer un dossier
- Lire à partir d'un fichier
- Écrire dans un fichier
Voyons chacune de ces opérations en détail !!
Ouvrez un fichier
L'association d'un objet de l'une des classes de flux à un fichier pour la lecture ou l'écriture ou les deux s'appelle l'ouverture d'un fichier. Un fichier ouvert est représenté dans le code à l'aide de cet objet de flux. Ainsi, toute opération de lecture / écriture effectuée sur cet objet de flux sera également appliquée au fichier physique.
La syntaxe générale pour ouvrir un fichier avec le flux est:
void open(const char* filename, ios::open mode mode)
Ici,
filename => La chaîne contenant le chemin et le nom du fichier à ouvrir.
mode => Paramètre optionnel indiquant le mode dans lequel le fichier doit être ouvert.
C ++ prend en charge divers modes dans lesquels le fichier peut être ouvert. Nous pouvons également spécifier une combinaison de ces modes à l'aide de l'opérateur OR.
qu'est-ce que loadrunner dans les tests logiciels
Mode fichier | Description |
---|---|
ios :: dans | Ouvre le fichier en mode d'entrée pour la lecture. |
ios :: out | Ouvre le fichier en mode sortie pour écrire des données dans un fichier. |
ios :: mangé | Définissez la position initiale à la fin du fichier. Si l'indicateur de fin de fichier n'est pas défini, la position initiale est définie sur le début du fichier. |
ios :: trunc | Si le fichier est ouvert pour l'écriture et a déjà un contenu, le contenu est tronqué. |
ios :: application | Ouvre le fichier en mode ajout de sorte que tout le contenu soit ajouté à la fin du fichier. |
ios :: binaire | Ouvre le fichier en mode binaire. |
Par exemple,si nous voulons ouvrir un fichier «myfile.dat» pour ajouter des données en mode binaire, alors nous pouvons écrire le code suivant.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Comme déjà mentionné, le paramètre mode est facultatif. Lorsque nous ouvrons un fichier sans spécifier le deuxième paramètre, une fonction membre ouverte de ofstream, ifstream ou fstream a un mode par défaut pour ouvrir le fichier avec.
Ceux-ci sont donnés comme suit:
Classer | Mode par défaut |
---|---|
Ifstream | ios :: dans |
ofstream | ios :: out |
Fstream | ios :: in | ios :: out |
Ainsi, si nous ne spécifions pas le deuxième paramètre dans la fonction open, en fonction de la classe de flux utilisée, le fichier est ouvert avec le mode par défaut.
Fermer un fichier
Nous pouvons utiliser la fonction close pour fermer un fichier et libérer les ressources détenues par le fichier lorsque nous avons terminé les opérations d'entrée et de sortie sur un fichier.
La fonction pour fermer un fichier est:
void close()
Ainsi, lorsque nous avons terminé les opérations sur le fichier myfile ci-dessus, nous pouvons fermer le fichier comme suit:
myfile.close();
Une fois le fichier fermé à l'aide de la fonction de fermeture, l'objet fichier associé peut être réutilisé pour ouvrir un autre fichier.
Lire à partir d'un fichier
Nous pouvons lire les informations d'un fichier ligne par ligne en utilisant l'opérateur d'extraction de flux (>>). Ceci est similaire à la lecture de l'entrée de l'entrée standard à l'aide de cin. La seule différence étant dans le cas des fichiers, nous utilisons ifstream ou fstream object au lieu de cin.
Un exemple de code pour la lecture d'un fichier est donné ci-dessous:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<Dans le code ci-dessus, nous ouvrons un fichier et en utilisant l'opérateur d'extraction de flux (>>), nous lisons le contenu du fichier. Une fois la lecture terminée, nous pouvons fermer le fichier.
Ecrire dans un fichier
Nous pouvons également écrire des données dans un fichier en utilisant les opérations sur les fichiers. L'opérateur que nous utilisons pour écrire des données dans un fichier est un opérateur d'insertion de flux (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Considérons l'exemple de code suivant:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Ici, nous lisons une ligne à partir de l'entrée et l'écrivons dans un fichier qui a été ouvert avec l'objet ofstream.
Dans l'exemple de code ci-dessous, nous fournissons une démonstration de toutes les opérations de gestion de fichiers.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Production:
Ecrire dans le fichier
Entrez votre nom: Ved
Entrez votre âge: 7
Lire à partir d'un fichier
Par
7
Dans le programme ci-dessus, nous ouvrons d'abord un fichier en mode écriture. Ensuite, nous lisons les données, c'est-à-dire le nom et l'âge, et les écrivons dans un fichier. Nous fermons ensuite ce fichier. Ensuite, nous ouvrons le même fichier en mode lecture et lisons les données ligne par ligne à partir du fichier et les sortons à l'écran.
Ainsi, ce programme couvre toutes les opérations d'E / S sur les fichiers.
Scories d'état du fichier
Certaines fonctions membres sont utilisées pour vérifier l'état du fichier. Toutes ces fonctions renvoient une valeur booléenne.
meilleur nettoyeur d'ordinateur pour windows 10
Nous avons tabularisé ces fonctions comme suit:
Fonction Description eof () Renvoie true si la fin du fichier est atteinte lors de la lecture du fichier. échouer() Renvoie true lorsque l'opération de lecture / écriture échoue ou qu'une erreur de format se produit mal() Renvoie true si la lecture ou l'écriture dans un fichier échoue. bon() Renvoie false dans les mêmes cas où l'appel de l'une des fonctions ci-dessus renverrait true.
Get / Put et autres opérations spéciales
Les flux d'E / S de fichier que nous avons vus jusqu'à présent ont des positions internes de récupération et de mise en place similaires aux autres flux d'E / S comme iostream.
La classe ifstream a une position d'obtention interne qui contient l'emplacement de l'élément / caractère à lire dans le fichier lors de la prochaine opération d'entrée. La classe ofstream a une position de mise interne qui contient l'emplacement de l'élément / caractère à écrire lors de la prochaine opération de sortie.
comment lire les fichiers mkv
Incidemment, fstream a à la fois des positions get et put.
Pour faciliter la lecture et l'écriture à l'aide de ces positions, nous avons quelques fonctions membres qui permettent d'observer et de modifier ces positions.
Ces fonctions sont répertoriées ci-dessous:
Les fonctions Description tellg () Renvoie la position actuelle du pointeur get tellp () Renvoie la position actuelle du pointeur de placement seekg (position) Les mouvements obtiennent un pointeur vers l'emplacement spécifié en comptant à partir du début du fichier seekg (décalage, direction) Les mouvements obtiennent un pointeur sur la valeur de décalage par rapport au point donné par la direction du paramètre. seekp (position) Les mouvements placent un pointeur vers l'emplacement spécifié en comptant à partir du début du fichier seekp (décalage, direction) Les mouvements placent un pointeur sur la valeur de décalage par rapport au point donné par la direction du paramètre.
Le paramètre direction donné dans les prototypes de fonction ci-dessus est un dénombré type de type seekdir et il détermine le point à partir duquel le décalage est compté.
Il peut avoir les valeurs suivantes.
ios :: mendier Décalage depuis le début du flux ios :: cur Décalage par rapport à la position actuelle ios :: fin Décalage par rapport à la fin du flux
Voyons un exemple complet qui démontre l'utilisation de ces fonctions.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Production:
Nouveau fichier créé
Position initiale du pointeur de fichier à: 34
Après seekp (-1, ios :: cur), position du pointeur de fichier à: 33
Après seekg (5, ios :: beg), File Pointer at: 5
Après seekg (1, ios :: cur), File Pointer at: 6
Comme indiqué dans le programme ci-dessus, nous avons un fichier créé dans lequel nous écrivons une ligne de texte. Puis en utilisant les différentes fonctions décrites ci-dessus, nous affichons différentes positions du pointeur de fichier.
Conclusion
Dans ce tutoriel, nous avons vu les différentes opérations sur les fichiers pour ouvrir, fermer et lire / écrire des données depuis / vers un fichier.
Nous avons également vu les fonctions permettant de changer le pointeur de fichier afin d'accéder à des positions spécifiques dans le fichier. Dans nos didacticiels suivants, nous aborderons quelques sujets plus importants liés au C ++.
=> Lisez la série de formations Easy C ++.
lecture recommandée
- Opérations d'entrée / sortie de base en C ++
- Entrée-sortie et fichiers en Python (ouverture, lecture et écriture de Python dans un fichier)
- Opérations d'E / S de base en Java (flux d'entrée / sortie)
- Manipulation de fichiers sous Unix: présentation du système de fichiers Unix
- Caractères spéciaux ou métacaractères Unix pour la manipulation de fichiers
- Autorisations d'accès aux fichiers Unix: Unix Chmod, Chown et Chgrp
- Objets de fichier VBScript: CopyFile, DeleteFile, OpenTextFile, lecture et écriture de fichier texte
- Déploiement Java: création et exécution d'un fichier JAR Java