写入字符串流内容到ofstream的
-
11-07-2019 - |
题
我目前使用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();
当传递一个字符串流rdbuf到流新行不被翻译。输入文本可以包含\n
于是找到替代将无法正常工作。旧的代码写到fstream,并切换到字符串流损失ENDL翻译。
我宁愿写ss.str();
代替ss.rdbuf();
(并使用字符串流)。
如果您使用ss.rdbuf()
的outFile
格式,标志将被重置渲染代码不可重用。
即,GetHolesResults(..., std::ofstream &outFile)
的调用者可能要编写这样的事情结果显示在表:
outFile << std::setw(12) << GetHolesResults ...
...,不知为什么宽度被忽略。
不隶属于 StackOverflow