Bonjour,
Je dois lire un fichier construit en concat�nant d'autres fichiers, genre une archive. Certains sont "binaires", genre un fichier png, d'autres "texte", genre un fichier texte. Je connais la position de chaque fichier, et le nombre d'octets qu'il occupe.
J'aimerais pouvoir lire la partie texte du gros fichier, comme si il s'agissait d'un fichier texte ind�pendant.
Pour cela, je fais un truc comme :
Ensuite j'utilise le stringstream comme si c'�tait un fichier ouvert en mode texte.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 std::stringstream str; std::ifstream f( "...", std::ios::binary ); /* l'archive */ f.seekg( debut_du_texte, std::ios::beg ); /*faire des f.read() et str.write() jusqu'à avoir lu tous les octets du texte dans le stringstream*/
Le probl�me est que, sous windows, je me retrouve avec des '\r' en fin de lignes. Je crois que comme le fichier d'archive est ouvert en binaire, les traitements sur le str; comme std::getline( line, str ), gardent les '\r'.
Pour r�sumer : �a marche pas, et je capte pas pourquoi. Je m'attendais � ce que le stringstream, un flux en mode texte donc, d�gage les '\r'. Mais il ne le fait pas. Peut-�tre que normalement ce traitement est fait en amont ? genre dans les std::basic_streambuf et que mon code passe � cot� ?
Voil� donc. Si vous avez des id�es � me donner, je vous serais reconnaissant.
Merci
Partager