J'utilise actuellement std::ofstream
comme suit:
std::ofstream outFile;
outFile.open(output_file);
Ensuite, j'essaie de passer un objet std::stringstream
à outFile
comme suit:
GetHolesResults(..., std::ofstream &outFile){
float x = 1234;
std::stringstream ss;
ss << x << std::endl;
outFile << ss;
}
Maintenant, ma outFile
ne contient plus que des ordures: "0012E708" répété partout.
Dans GetHolesResults
je peux écrire
outFile << "Foo" << std:endl;
et il sortira correctement dans outFile
.
Une suggestion sur ce que je fais mal?
Vous pouvez le faire, ce qui n’a pas besoin de créer la chaîne. Il permet au flux de sortie de lire le contenu du flux sur le côté droit (utilisable avec n’importe quel flux).
outFile << ss.rdbuf();
Si vous utilisez std::ostringstream
et vous demandez pourquoi rien n’est écrit avec ss.rdbuf()
, utilisez la fonction .str()
.
outFile << oStream.str();
Lors du passage d'un rstream Streamd à un flux, les nouvelles lignes ne sont pas traduites. Le texte saisi pouvant contenir \n
, la fonction de remplacement de la recherche ne fonctionnera pas. L'ancien code écrivait dans un fstream et le basculait en stringstream perd la traduction endl