我目前使用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 ...

...,不知为什么宽度被忽略。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top