6
votes

Comment utiliser l'écriture avec Stringstream?

J'ai un vecteur de données que je veux écrire dans std :: stringstream .

J'ai essayé: xxx

... mais il semble ne rien mettre dans my_ss que j'ai déclaré comme suit: < p> std :: stringstream my_ss (std :: stringstream :: binaire);

pourquoi écrire ne fonctionne pas (l'application ne se bloque pas et compile avec 0 erreurs, 0 avertissements) ?


1 commentaires

Montrez-nous du code réel. (Et std :: basic_ios :: binaire n'a aucun effet sur un stringstream . Ils sont toujours "binaires".)


3 Réponses :


9
votes

pour le "Comment dois-je le faire" que vous pouvez utiliser un std :: ostream_itéator code>: xxx pré>

Exemple complet: P>

std::string str(vector.begin(), vector.end()); // skip all of the copy and stringstream


1 commentaires

Cette réponse peut donner une mauvaise idée comme si stringstream :: écrire () ne peut pas être utilisé. En effet, le problème de l'OP semble ne pas être avec stringstream :: écrire () , mais avec std :: stringstream my_ss (std :: stringstream :: binaire); , lequel Peut être réparé à std :: stringstream my_ss (std :: stringstream :: out | std :: stringstream :: binaire); comme les autres réponses suggèrent.



5
votes

Bien que vous n'aviez pas donné de code, cela sonne comme si vous venez probablement d'écrire:

std::stringstream my_ss (std::stringstream::out | std::stringstream::binary);


0 commentaires

4
votes

Le paramètre par défaut pour le mode de StringBuf dans StringStream est sorti | In.

explicit basic_stringstream(ios_base::openmode _Mode =
    ios_base::in | ios_base::out)
    : _Mybase(&_Stringbuffer),
        _Stringbuffer(_Mode)
    {   // construct empty character buffer
    }


0 commentaires