我遇到了一个涉及stringstream的令人费解的bug。我有一个对象的属性,我想使用dumpState()转储到一个文件。该对象具有多个成员对象,每个成员对象都有为其定义的运算符< <。这里的代码:写入字符串流后,为什么解压缩为字符串会导致该字符串变为虚假?
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();
}
我的意图当然是写入一个文件,其名称是由步骤确定。不幸的是,我发现输出的值是假的。跟踪错误,我发现如果我注释掉“s >>文件名;”值是正确的。
必须有某种潮红问题正在进行,但我不知道如何解决它。关于这个看起来很邪恶的bug的任何想法?
UPDATE:
我认为这个问题是一个相当复杂的错误是由于我的代码的其他地方是错误的。重新构建我的代码后,我发布的原始代码工作正常。
它必须是sstream因为strstream.h是strstream –
@DougT。事实上,它是 –
andyInCambridge
这真的很有趣,它看起来像读取一个整数,但字符串失败时工作。 –