Bonjour,
Actuellement je suis entrain d'apprendre le C++, mais je bute sur un truc incompréhensible.
J'ai téléchargé ce document :
http://www.siteduzero.com/uploads/fr/ftp/mateo21/cpp/dico.zip , qui contient un fichier "dico.txt" où il y a un mot par ligne.
Je démarre un nouveau projet en "console" et je pond ça:
- Spoiler:
- Code:
-
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
//On ouvre "dico.txt" en lecture seul.
string file("dico.txt");
ifstream flux(file.c_str());
//Si on n'a pas reussi à ouvrir le fichier on stop tout.
if(!flux){ cout << "Lecture de " << file << " imposssible" << endl; return 1; }
//On compte le nombre de lignes.
int nbr_line(0);
for(string line; getline(flux, line); nbr_line++) {}
cout << nbr_line << endl;
return 0;}
Ce qui me retourne "323577".
J'ouvre un éditeur de texte, je descend en bas du document et j'ai "323623".
Je me dit que mon code ne doit pas être bon, du coup je fait un code pour copier mot à mot mon fichier et voir s'il me coupe la fin du fichier.
Voici la bête:
- Spoiler:
- Code:
-
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
//On ouvre "dico.txt" en lecture seul.
string file("dico.txt");
ifstream flux(file.c_str());
//Si on n'a pas reussi à ouvrir le fichier on stop tout.
if(!flux){ cout << "Lecture de " << file << " imposssible" << endl; return 1; }
//Recreer le fichier et affiche le nombre de mots
ofstream flux2("dico2.txt", ios::app);
int i(0);
for(string mot; flux >> mot; i++) { flux2 << mot << endl; }
cout << i << endl;
return 0;}
Ça me créer "dico2.txt" et ça me renvois encore une fois "323577".
J'ouvre dico2.txt et en fin de fichier le numéro de ligne est cette fois ci "323577" contre "323623" pour "dico.txt" et ça finis par les mêmes mots (ça commence par les mêmes aussi).
Je me dit qu'il doit y avoir des mots qui on dût être supprimés lors de la copie, donc je fait un code qui compare mot à mot les deux fichiers.
Le voici:
- Spoiler:
- Code:
-
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
//On ouvre "dico.txt" et dico2.txt" en lecture seul.
string file("dico.txt");
ifstream flux(file.c_str());
string file2("dico2.txt");
ifstream flux2(file2.c_str());
//Si un des deux fichier ne s'ouvre pas on arrête tout.
if(!flux or !flux2){ cout << "Lecture de " << file << " ou " << file2 << " imposssible" << endl; return 1; }
//On compare les deux fichier.
string mot, mot2;
while(flux >> mot){
flux2 >> mot2;
if(mot != mot2){ cout << mot << " != " << mot2 << endl; return 1; }
}
return 0;}
Résultat : tout est ok, la console ne me renvois pas d'erreur.
Es ce que quelqu'un peut me dire d'où ça viens svp, car là je ne vois pas du tout :'(