c++ - 写入字符串流后,为什么提取到字符串中会导致该字符串变成伪造的?

标签 c++ stl operators stringstream

我遇到了一个涉及 stringstream 的令人费解的错误。我有一个对象,我想使用 dumpState() 将其属性转储到一个文件中。该对象有许多成员对象,每个成员对象都定义了 operator<<。这是代码:

void dumpState(int step){
  stringstream s;
  s << DUMP_PATH << step;
  string filename;
  //s >> filename;

  fstream f;
  f.open("fuuuuu.csv", fstream::out); 
  //f.open(filename.c_str(), fstream::out);  

  f << numNodes << '\n';
  f << nodes << '\n';
  f << numEdges << '\n';
  f << edges << '\n';
  f.close();
}

我的意图当然是写入一个文件,文件名由step决定。不幸的是,我发现输出的值是假的。跟踪错误,我发现如果我注释掉“s>>文件名;”值是正确的。

一定是出现了某种冲洗问题,但我不知道如何解决。关于这个看起来很邪恶的错误有什么想法吗?

更新:

我认为这个问题是一个相当复杂的错误,因为我的代码中的其他地方存在错误。重构我的代码后,我发布的原始代码工作正常。

最佳答案

您应该使用 ostringstream 并调用 s.str() 来获取内容。

关于c++ - 写入字符串流后,为什么提取到字符串中会导致该字符串变成伪造的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614632/

相关文章:

c++ - 迭代器与下标

c++ - 如何为 std::string 可变参数模板参数调用 c_str()?

c++ - find_if 总是给出第一个元素而不进入 isOdd 函数

haskell - 我对幺半群的理解有效吗?

c++ - 运算符+和运算符[]有什么不同

java - 我收到从 int 到 boolean 类型不匹配的错误

c++ - 如何使用 FreeImage 获取子图像

c++ - 模板函数中的条件代码生成

c++ - 在 C++ 中将一个字符从 vector 插入到字符串

c++ - C++ 二维 vector 中的迭代