Bonjour à tous,
pour apprendre les différents modes d'écriture sur un fichier texte, je fait un petit programme avec un switch (lecture, écrasement, ajout, etc... mais il plante.
si je déclare un ofstream dans une fonction j'ai l'erreur de compilation
en fait mon problème est que si je déclare mon ofstream au début du fichier tout va bien mais cela ne me permet pas de choisir le mode d'ouverture avec un switch.error: 'std::ios_base::ios_base(const std::ios_base&)' is private|
je suis certain que ma question est idiote mais ca fait des heures que j'essaie de contourner le problème en vain
merci de votre aide
Lucky
voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 #include <iostream> #include<stdlib.h> #include <string> #include <fstream> using namespace std; struct Personne { char nom[32], prenom[32], numero[20];}; string const lienFichier("F:\\prog\\tutosMateo\\scores.txt"); //ofstream monFlux(lienFichier.c_str()); //ofstream monFlux("F:\\prog\\tutosMateo\\scores.txt"); /******************************** FIN DES DECLARATIONS*********************************/ void remplit(ofstream monFlux){ if(monFlux)// on teste si tout est ok { monFlux << "Bonjour, je suis une phrase écrite dans un fichier." << endl; monFlux << 42.1337 << endl; int age(23); monFlux << "J'ai " << age << " ans." << endl; } else{ cout <<"ERREUR impossible d'ouvrir le fichier"<<endl; } } /********************************************/ void ecrase(){ ofstream monFlux(lienFichier.c_str()); remplit(monFlux); } /************************/ void complete(){ ofstream monFlux(lienFichier.c_str(), ios::app); remplit(monFlux); } int main() { const int maxAdresses = 50; Personne db[maxAdresses]; int nombreAdresses=0; bool fin=false; char choix; do{//pm c'est un do while cout << " 1) ouvrir le fichier en ecriture (ecrase)" << endl; cout << " 2) ajouter des donnees a la fin (append)" << endl; cout << " 3) lire en entier" << endl; cout << " 4) lire ligne par ligne" << endl; cout << " 5) lire mot par mot" << endl; cout << " 6) lire caractere par caractere" << endl; cout << "9) Quitter" << endl; cin >> choix; switch (choix) { case '1': //ouvrir le fichier en ecriture (ecrase) ecrase(); break; case '2': //ajouter des donnees a la fin (append) complete(); break; case '3': //lire en entier fin=true; break; case '4': //lire ligne par ligne fin=true; break; case '5': //lire mot par mot fin=true; break; case '6': //lire caractere par caractere fin=true; break; case '9': //QUITTER fin=true; break; } }while(!fin); return 0; }
Partager