Bonjour,
Voila en voulant mettre le contenu d'un fichier en mémoire dans un stringstream via ce morceau de code :
Code :
- std::ifstream fichier ("toto.txt", std::ios::in);
- std::stringstream ss;
- ss << fichier.rdbuf();
- 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 :
- fichier.seekg(0, std::ios::end);
- std::cout << "Taille fichier ouvert : " << fichier.tellg()<<std::endl; //=>200986 qui est la taille correcte du fichier.
- fichier.seekg(0, std::ios::beg);
- std::streambuf * buf;
- pbuf = fichier.rdbuf();
- std::cout << "Nombre de caractère dispo : " <<buf->in_avail()<<std::endl; //=>200986 la aussi ce qui me surprend guère.
- std::stringstream ss;
- ss << fichier.rdbuf();
- ss.seekg(0, std::ios::end);
- 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
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
Message édité par sknet le 10-08-2007 à 04:27:27