[Ifstream] Lecture fichier et mémoire
Voila, j'essaye de faire une lecture depuis un fichier, et de mettre les mots lus dans ce fichier dans la structure de donnée que manipule mon programme, ici un Vector.
voici le code :
Code:
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
|
cout << "Restauration.\n" << endl;
string nom_fichier;
cout << "Saisissez le nom du fichier de restauration" << endl;
cin.ignore( std::numeric_limits<streamsize>::max(), '\n' );
getline(cin,nom_fichier);
ifstream flux;
char * buffer;
long size;
int ib=0;
string snew;
flux.open(nom_fichier.c_str(),ios::binary);
flux.seekg(0,ifstream::end);
size=flux.tellg();
flux.seekg(0);
if(flux.fail())
{
cout << "Il y a une erreur à l'ouverture du fichier " << nom_fichier << ".\nIl est peut être introuvable ou indisponible." << endl;
}
else
{
buffer = new char [size];
flux.read (buffer,size);
while(ib<size)
{
s.append(""+buffer[ib]);
ib++;
}
cout << "Rés = " << s << endl << endl;
delete[] buffer;
} |
et voici le contenu du fichier texte que je veux lire (save.txt):
Citation:
coucou%ceci%est%un%TEST%d'écriture%en%entrée.%
edit : vu les pb actuels, je n'ai pas mis la portion de code relative au découpage en mots.
Voici une capture d'écran du programme au démarrage :
http://img142.imageshack.us/img142/5463/es0bm3.jpg
Et voici le résultat d'une saisie n°4 : j'obtiens un affichage incohérent :
http://img512.imageshack.us/img512/7668/es1gh6.jpg
http://img512.imageshack.us/img512/7...fe0aaa60fb.jpg
A part le premier mot "coucou", qui est bien lu, le reste, je n'explique pas comment il a pu arriver là. Par ce que c'est du texte qui ne s'affiche que dans certaines portions de code du programme. Donc, ça voudrait dire que ces affichages sont des restes d'exécution précédentes, sans que j'ai pourtant fermé ma fenetre CMD à chq exécution... C'est à ni rien comprendre...