[C++] Problème stringstream/fstream et rdbuf() [résolu]

Problème stringstream/fstream et rdbuf() [résolu] [C++] - C++ - Programmation

Marsh Posté le 10-08-2007 à 00:25:19    

Bonjour,
 
Voila en voulant mettre le contenu d'un fichier en mémoire dans un stringstream via ce morceau de code :
 

Code :
  1. std::ifstream fichier ("toto.txt", std::ios::in);
  2. std::stringstream ss;
  3. ss << fichier.rdbuf();
  4. fichier.close();


 
Cela semble marcher quand j'utilise l'operator<<, j'obtiens le meme resultat que si j'utilisais le fichier pour extraire, mais en vérifiant la taille du fichier et du contenu du stringstream, j'obtiens 2 résultats différents , ex :
 

Code :
  1. fichier.seekg(0, std::ios::end);
  2. std::cout << "Taille fichier ouvert : " << fichier.tellg()<<std::endl; //=>200986 qui est la taille correcte du fichier.
  3. fichier.seekg(0, std::ios::beg);
  4. std::streambuf * buf;
  5. pbuf = fichier.rdbuf();
  6. std::cout << "Nombre de caractère dispo :  " <<buf->in_avail()<<std::endl; //=>200986 la aussi ce qui me surprend guère.
  7. std::stringstream ss;
  8. ss << fichier.rdbuf();
  9. ss.seekg(0, std::ios::end);
  10. std::cout << "Taille du stringstream : " << iss.tellg()<<std::endl; //=>197506 ... gné ???!!!


 
Alors que je n'ai effectué aucune opération d'extraction entre les tests ci dessus.
 
Merci pour celui ou celle qui pourra m'expliquer l'origine de ce résultat :D
 
edit :
 
Rah je me suis encore fait ***** avec le format du fichier, en ouvrant en mode binaire tout rentre dans l'ordre, désolé du dérangement :D


Message édité par sknet le 10-08-2007 à 04:27:27
Reply

Marsh Posté le 10-08-2007 à 00:25:19   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed