Lire et écrire dans un fichier texte en C++
Dans ce tutoriel, nous allons apprendre comment lire et écrire dans un fichier texte en C++. Dans les deux cas, il faut toujours vérifier si le fichier existe après la déclaration d'un flux de données de lecture/écriture:
ifstream monFlux("C:/test.txt");
if(monFlux){
...
}
else{
//message qui indique que le fichier n'existe pas
}
#include <iostream>
ifstream monFlux("C:/test.txt");
if(monFlux){
...
}
else{
//message qui indique que le fichier n'existe pas
}
Ecriture dans un fichier en C++
L'écriture se fait en créant un flux ofstream qui prend en paramètre le nom de fichier. Ce flux va jouer l’intermédiaire entre le compilateur et le fichier. L'instruction nomFlux << " écrire quelque chose "<<endl; écrit la phrase "écrire quelque chose" dans le fichier test.txt. endl fait un retour à la ligne.
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
void ecriture(int T[])
{
string const nomFichier("C:/test.txt");
ofstream monFlux(nomFichier.c_str());
if(monFlux)
{
string chaine;
for(int i = 0 ; i < 10 ;i++)
chaine += convertInt(T[i])+" ";
monFlux << chaine << endl ;
}
else
cout << "Impossible d'ouvrir le fichier." << endl;
}
//Convertir un entier en string
string convertInt(int nombre)
{
stringstream ss;ss << nombre;return ss.str();
}
//Générer un nombre alétoire
//Générer un nombre alétoire
int rand(int nb)
{
return rand()%nb;
}
int main()
{
int T1[10]={1,2,3,4,5,6,7,8,9,10};
ecriture(T1);
lecture();
srand(time(NULL));
for(int i=0; i<5; i++)
printf("%d \n",rand(50));
system("pause");
}
Lecture d'un fichier en C++
En C++, on peut lire avec trois manières:
- Ligne par ligne: le curseur de lecture va lire la ligne entière et passe vers la suivante avec la méthode getline ( ifstream flux, string ligne).
- Mot par mot: avec l'instruction monFlux >> mot; mot est un string. Les mots sont séparés par des espaces.
- caractère par caractère: avec la méthode get(char c).
Exemple:
void lecture()
{
ifstream monFlux("C:/test.txt");
if(monFlux)
{
string ligne;
printf("ligne par ligne\n");
while(getline(monFlux,ligne))
cout<<ligne<<endl;
printf("mot par mot\n");
monFlux.clear();
//initialiser le curseur de zéro
//initialiser le curseur de zéro
monFlux.seekg(0, ios::beg);
string mot;
while(monFlux >> mot)
cout<<mot<<endl;
printf("caractere par caractere\n");
monFlux.clear();
monFlux.seekg(0, ios::beg);
char c;
while(monFlux.get(c))
{
cout<<c<<endl;
int position=monFlux.tellg();
}
}
else
cout<<"impossible d'ouvrir le fichier" <<endl;
}