CRLF à la fin de la ligne et ostringstream

Je suis en train d'utiliser un ostringstream de construire une chaîne qui utilise la plate-forme standard des fins de ligne (donc pour moi c'est CRLF depuis que je suis en train d'élaborer pour Windows). J'ai essayé le code suivant:

std::ostringstream out;
out << "line1\nline2\n";
const char* result = out.str().c_str(); //In result end of lines are '\n' instead
                                        //of the expected '\r\n'

Depuis ostringstream s'ouvre par défaut en mode texte, j'ai pensé qu'il serait de réaliser la fin de la ligne de conversion (comme un ofstream), mais le char buffer ne contient pas attendus CRLF à la fin de lignes....

Edit:

Pour ceux qui se demandait pourquoi j'avais besoin de la CRLF se terminant en interne: - je copier le texte dans le presse-papiers de Windows et de l'utilisateur de copier le contenu dans le bloc-notes et sans le CRLF à la fin de la fin de lignes sont perdus au cours de cette dernière opération....

Ma solution:

Finalement, j'ai décidé d'utiliser la bibliothèque boost pour remplacer \n \r\n:

boost::replace_all( str, "\n", "\r\n" );
  • Qui est correct. std::ostringstream utilise interne de la chaîne de texte à la représentation. CRLF est utilisé pour le disque représentation de texte. Si vous lisez le std::ifstream à std::string vous vous attendez à ce que CRLF est converti à la représentation interne. Donc, tout le monde s'attend à ce que std::string contient interne de la représentation de texte à tout moment.
InformationsquelleAutor JMD | 2011-03-29