OVH Cloud OVH Cloud

stringstream, ends et effets indésirables

1 réponse
Avatar
Benoit Rousseau
Je suis déçu par Thinking in C++ qui explique très bien les strstreams,
mais qui ne donne rien sur les stringstream... Mais bon...

Il y a une partie de l'interface que je ne maitrise pas et qui doit
rester tel qu'elle est. Je dois créer une chaine de caractère avec des
entiers. J'utilise donc ostringstream au lieu de sprintf :

string option() {
os << "Option 1 : " << 1 << ends;
return os.str();
}

{ //Partie a ne pas modifier
string o = option()
log( o );
}

void log( string o ) {
ofstream F;
F.open( filename, ios::out );
F << o << endl;
}

Je me retrouve avec un des ^@ (je suppose que ce sont des \0) sur le
fichier de log :
* Je ne sais pas quel effet ça pourra avoir sur la lecture du fichier???
* Si je retire ends, il n'affiche plus ce ^@ ; où est mon erreur ?

Qu'est ce que vous me recommandez ?

En fait je peux modifier la partie à ne pas modifier, mais ce sera plus
long que de changer les ostringstream...


--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

1 réponse

Avatar
Loïc Joly
Benoit Rousseau wrote:

Je suis déçu par Thinking in C++ qui explique très bien les strstreams,
mais qui ne donne rien sur les stringstream... Mais bon...

Il y a une partie de l'interface que je ne maitrise pas et qui doit
rester tel qu'elle est. Je dois créer une chaine de caractère avec des
entiers. J'utilise donc ostringstream au lieu de sprintf :

string option() {
os << "Option 1 : " << 1 << ends;
return os.str();
}
[...]


Je me retrouve avec un des ^@ (je suppose que ce sont des ) sur le
fichier de log :
* Je ne sais pas quel effet ça pourra avoir sur la lecture du fichier???
* Si je retire ends, il n'affiche plus ce ^@ ; où est mon erreur ?

Qu'est ce que vous me recommandez ?


D'enlever le ends qui n'est utile qu'avec les strstream, pas avec les
stringstream.

--
Loïc