簡體   English   中英

將字符串流內容寫入 ofstream

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM