[英]Writing stringstream contents into ofstream
我目前使用std::ofstream
如下:
std::ofstream outFile;
outFile.open(output_file);
然后我嘗試將std::stringstream
對象傳遞給outFile
,如下所示:
GetHolesResults(..., std::ofstream &outFile){
float x = 1234;
std::stringstream ss;
ss << x << std::endl;
outFile << ss;
}
現在我的outFile
包含垃圾:“0012E708”到處重復。
在GetHolesResults
我可以寫
outFile << "Foo" << std:endl;
它將在outFile
正確輸出。
關於我做錯了什么的任何建議?
您可以這樣做,這不需要創建字符串。 它使輸出流在右側讀出流的內容(可用於任何流)。
outFile << ss.rdbuf();
如果您正在使用std::ostringstream
並想知道為什么ss.rdbuf()
沒有寫入任何內容,那么請使用.str()
函數。
outFile << oStream.str();
將 stringstream rdbuf 傳遞給流時,不會轉換換行符。 輸入文本可以包含\\n
因此查找替換將不起作用。 舊代碼寫入 fstream 並將其切換到 stringstream 會丟失 endl 轉換。
我寧願寫ss.str();
而不是ss.rdbuf();
(並使用字符串流)。
如果你使用ss.rdbuf()
的格式標志outFile
將被重置渲染代碼不可重用。 即, GetHolesResults(..., std::ofstream &outFile)
的調用者可能想寫這樣的東西來在表中顯示結果:
outFile << std::setw(12) << GetHolesResults ...
...並想知道為什么忽略寬度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.