코드를 테스트하는 동안 더 많은 데이터가 파일에 기록 될 때 ifstream
이 업데이트되지 않는 문제가 발생했습니다. 그들이 파일에 기록됩니다 불구하고ofstream을 사용하여 데이터가 파일에 쓰여진 후 ifstream 객체를 업데이트합니다.
ifstream is(filename);
string line;
while (getline(is, line))
cout << "line: " << line << endl;
ofstream os(filename, ofstream::out | ofstream::app);
string additional("additional");
os << additional;
os.flush();
while (getline(is, line))
cout << "line additional: " << line << endl;
추가 라인 stdout
에 기록되지 않았다 : 그래서 여기에 문제를 보여주는 샘플 코드입니다. 테스트 용으로 필요하기 때문에 if/ofstream 대신에 fstream
을 사용하고 있지 않습니다.
ifstream
만드는 방법 파일의 변경 사항을 "확인 하시겠습니까?"
업데이트 : clear
메서드를 사용하여 비트를 지 웠습니다. 내 우분투 컴퓨터에서 gcc를 사용하여 정상적으로 작동합니다. 하지만 llvm을 사용하는 Mac OSX에서는 작동하지 않습니다. 독립적으로 플랫폼을 수행하는 방법을 알고 있습니까?
당신은 절대적으로 옳습니다. 나는 대답을 고쳤습니다. 고마워요! – tux3
고마워요! 나는 eofbit과 failbit를 설정 했으므로 근본적으로 문제가되지 않는다. 나는 단지 그것을 지우고 우분투에서 잘 작동한다. gcc. Mac OSX, llvm에서는 작동하지 않지만. 어떤 아이디어? 불행히도 Mac에서는 lldb를 사용하여 디버깅 할 수 없습니다. – rightaway717
@ rightaway717 LLVM의 버그입니다. – 0x499602D2