Académique Documents
Professionnel Documents
Culture Documents
Achref El Mouelhi
elmouelhi.achref@gmail.com
Avril 2018 1 / 22
Plan
1 Introduction
2 Fichiers de code
3 Fichiers de données
Avril 2018 2 / 22
Introduction
C++
Les fichiers ?
I c
Un des premiers supports de stockage EL
H
Dans ce cours, on va détailler M
OU
f E L
h re
les fichiers de code
c
source
c A de données
les fichiers
Avril 2018 3 / 22
Fichiers de code
C++
Avril 2018 4 / 22
Fichiers de code
C++
Avril 2018 5 / 22
Fichiers de code
C++
Avril 2018 6 / 22
Fichiers de code
C++
Avril 2018 6 / 22
Fichiers de code
C++
Code généré dans calcul.h
#ifndef CALCUL_H_INCLUDED
#define CALCUL_H_INCLUDED
I c
ELH
U
MO
#endif // CALCUL_H_INCLUDED
fE L
c h r e
c A
Avril 2018 7 / 22
Fichiers de code
C++
Code généré dans calcul.h
#ifndef CALCUL_H_INCLUDED
#define CALCUL_H_INCLUDED
I c
ELH
U
MO
#endif // CALCUL_H_INCLUDED
fE L
c h r e
c A
Remarques
C++
Déplaçons maintenant la fonction somme dans calcul.cpp
#include "calcul.h"
f E L
c hre
c A
Avril 2018 8 / 22
Fichiers de code
C++
Déplaçons maintenant la fonction somme dans calcul.cpp
#include "calcul.h"
f E L
h redans calcul.h
Déclarons son prototype
c
#ifndef
c A
CALCUL_H_INCLUDED
#define CALCUL_H_INCLUDED
#endif // CALCUL_H_INCLUDED
Avril 2018 8 / 22
Fichiers de code
C++
Avril 2018 9 / 22
Fichiers de code
C++
Exemple avec un type avancé (string, vector...) : code de calcul.cpp
#include "calcul.h"
Avril 2018 10 / 22
Fichiers de code
C++
Contenu de calcul.h
#ifndef CALCUL_H_INCLUDED
I c
#define CALCUL_H_INCLUDED
ELH
U
#include <string>
L MO
f E
e b);
rint
c h
int somme (int a,
c A
int nbrVoyelle(std::string str);
#endif // CALCUL_H_INCLUDED
Avril 2018 11 / 22
Fichiers de code
C++
Contenu de la fonction principale
#include <iostream>
#include "calcul.h"
I c
using namespace std;
ELH
U
int main()
L MO
{
f E
c hre
int x = 2, y = 3;
c A
int resultat = somme (x, y);
cout << "Le resultat est " << resultat << endl;
cout << "Le nombre de voyelle dans bonjour est "
<< nbrVoyelle("bonjour") << endl;
return 0;
}
Avril 2018 12 / 22
Fichiers de données
C++
I c
Permettant de lire et écrire des données utilisées dans un
programme
EL H
Plusieurs étapes pour l’utilisation d’un U
M O fichier
inclusion de la librairie E
f L
fstream (pour file stream)
r e
ch fichier en lecture ou en écriture
déclaration d’un
c
Ouverture
A
utilisation
fermeture
Avril 2018 13 / 22
Fichiers de données
C++
Pour inclure la librairie fstream
#include <fstream>
I c
ELH
U
L MO
f E
c hre
c A
Avril 2018 14 / 22
Fichiers de données
C++
Pour inclure la librairie fstream
#include <fstream>
Avril 2018 14 / 22
Fichiers de données
C++
Pour inclure la librairie fstream
#include <fstream>
Avril 2018 14 / 22
Fichiers de données
C++
Pour inclure la librairie fstream
#include <fstream>
Il se trouve dans le même dossier que nos fichiers sources, s’il n’existe pas il sera créé et
s’il existe il sera écrasé
Avril 2018 14 / 22
Fichiers de données
C++
Avant d’utiliser le fichier, on teste si le fichier a été ouvert avec succès
if(file)
{
// Ouverture réussie, on peut utiliser le fichier
}
else
I c
{
cout << "Problème d’ouverture de fichier" << endl;
ELH
}
U
L MO
f E
c hre
c A
Avril 2018 15 / 22
Fichiers de données
C++
Avant d’utiliser le fichier, on teste si le fichier a été ouvert avec succès
if(file)
{
// Ouverture réussie, on peut utiliser le fichier
}
else
I c
{
cout << "Problème d’ouverture de fichier" << endl;
ELH
}
U
L MO
f E
hre
Pour écrire dans le fichier
c
c A
if (file)
{
file <<
file <<
"bonjour" << endl;
’a’ << endl;
file << 85 << endl;
}
else
{
cout << "Problème d’ouverture de fichier" << endl;
}
Avril 2018 15 / 22
Fichiers de données
C++
Avant d’utiliser le fichier, on teste si le fichier a été ouvert avec succès
if(file)
{
// Ouverture réussie, on peut utiliser le fichier
}
else
I c
{
cout << "Problème d’ouverture de fichier" << endl;
ELH
}
U
L MO
f E
hre
Pour écrire dans le fichier
c
c A
if (file)
{
file <<
file <<
"bonjour" << endl;
’a’ << endl;
file << 85 << endl;
}
else
{
cout << "Problème d’ouverture de fichier" << endl;
}
Avril
` 2018 15 / 22
Fichiers de données
C++
Pour écrire à la fin du fichier, on ajoute le paramètre app (pour append)
file.open("fichier.txt", ios::app);
I c
ELH
U
L MO
f E
c hre
c A
Avril 2018 16 / 22
Fichiers de données
C++
Pour écrire à la fin du fichier, on ajoute le paramètre app (pour append)
file.open("fichier.txt", ios::app);
I c
Pour fermer
ELH
U
MO
if (file)
{
f E L
hre
file << "bonjour" << endl;
c
file << ’a’ << endl;
c A
file << 85 << endl;
file.close();
}
else
{
cout << "Problème d’ouverture de fichier" << endl;
}
Avril 2018 16 / 22
Fichiers de données
C++
Pour déclarer un fichier de lecture (input file stream)
ifstream file;
I c
ELH
U
L MO
f E
c hre
c A
Avril 2018 17 / 22
Fichiers de données
C++
Pour déclarer un fichier de lecture (input file stream)
ifstream file;
I c
Pour ouvrir un fichier
ELH
U
MO
file.open("fichier.txt");
f E L
c hre
c A
Avril 2018 17 / 22
Fichiers de données
C++
Pour déclarer un fichier de lecture (input file stream)
ifstream file;
I c
Pour ouvrir un fichier
ELH
U
MO
file.open("fichier.txt");
f E L
c hre
c A
Trois fonctions/opérateurs pour lire le contenu
Avril 2018 17 / 22
Fichiers de données
C++
Pour lire le fichier ligne par ligne
if(file)
{
string line;
while(get(file, line))
I c
{
ELH
U
MO
cout << line << endl;
}
f E L
}
c hre
c A
else
{
cout << "Problème d’ouverture de file" << endl;
}
Avril 2018 18 / 22
Fichiers de données
C++
Pour lire le fichier ligne par ligne
if(file)
{
string line;
while(get(file, line))
I c
{
ELH
U
MO
cout << line << endl;
}
f E L
}
c hre
c A
else
{
cout << "Problème d’ouverture de file" << endl;
}
C++
Pour lire le fichier caractère par caractère
if(file)
{
char c;
while(file.get(c))
I c
{
ELH
U
MO
cout << c << endl;
}
f E L
}
c hre
c A
else
{
cout << "Problème d’ouverture de file" << endl;
}
Avril 2018 19 / 22
Fichiers de données
C++
Pour lire le fichier caractère par caractère
if(file)
{
char c;
while(file.get(c))
I c
{
ELH
U
MO
cout << c << endl;
}
f E L
}
c hre
c A
else
{
cout << "Problème d’ouverture de file" << endl;
}
C++
Pour lire le fichier mot par mot
if(file)
{
string word;
I c
while (file >> word)
ELH
{
U
cout << word << endl;
L MO
}
f E
}
c hre
else
{
c A
cout << "Problème d’ouverture de file" << endl;
}
Avril 2018 20 / 22
Fichiers de données
C++
Pour lire le fichier mot par mot
if(file)
{
string word;
I c
while (file >> word)
ELH
{
U
cout << word << endl;
L MO
}
f E
}
c hre
else
{
c A
cout << "Problème d’ouverture de file" << endl;
}
C++
Remarque
I c
H
Il est aussi possible de lire un nombre entier ou réel.
EL
U
L MO
f E
c hre
c A
Avril 2018 21 / 22
Fichiers de données
C++
Remarque
I c
H
Il est aussi possible de lire un nombre entier ou réel.
EL
U
L MO
f E
Exemple
c hre
double x; c A
file >> x;
Avril 2018 21 / 22
Fichiers de données
C++
}
cout << "Suppression impossible" << endl;
Avril 2018 22 / 22