stringstream과 관련된 수수께끼의 버그가 발생했습니다. dumpState()를 사용하여 파일에 덤프하려는 속성을 가진 객체가 있습니다. 이 객체에는 여러 개의 멤버 객체가 있으며 각 객체에는 연산자 < <이 정의되어 있습니다. 코드는 다음과 같습니다.stringstream에 쓰고 난 후에, 문자열을 추출하면 그 문자열이 가짜가되는 이유는 무엇입니까?
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 >> filename;을 주석 처리하면" 값은 정확합니다.
일종의 플러시 (flushing) 문제가 있어야하지만 문제를 해결하는 방법을 모르겠습니다. 이 사악한 버그에 대한 아이디어가 있습니까?
UPDATE :
나는 때문에 다른 곳에서 내 코드에서 실수로 문제가 다소 복잡한 오류라고 생각. 내 코드를 구조 조정 한 후에 내가 게시 한 코드가 정상적으로 작동합니다.
는 strstream.h가 strstream –
@DougT에 대한 때문에 sstream 될 것이다. 실제로 이것은 –
andyInCambridge
입니다. 이것은 정말 흥미 롭습니다. 이것은 정수를 읽었을 때 작동하지만 문자열이 실패하는 것 같습니다. –