我遇到了一个涉及 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/