0
파일 중간에 문자열을 삽입하려고합니다.fstream에는 삽입 할 수 있지만 iostream에는 삽입 할 수 없습니다.
다음 코드 (출력 문자열이 입력 한 동일하다이 경우)뿐만 아니라 iostream로하는 fstream 작동 :
// File contents: "abcdefghijklmnopqrstxyz"; "uvw" missing
// 1 - OK
//fstream iofs(fPath, ios_base::in | ios_base::out);
// 2 - Same output
filebuf fileBuffer;
iostream iofs(&fileBuffer); // generic output stream
fileBuffer.open(fPath.c_str(), ios_base::in | ios_base::out | ofstream::app);
iofs.rdbuf(&fileBuffer);
iofs.seekg(0, ios_base::end);
iofs.seekp(0, ios_base::end);
for(int i = 1; i < 20; ++i)
{
iofs.seekg(-i, std::ios_base::end);
char c = char(iofs.peek());
if(c == 't') {
iofs.seekp(-i + 1, std::ios_base::end);
iofs << "uvw"; // add missing token
iofs << "xyz"; // append pre-existing token
break;
}
}
출력 :
사례 1 : 시작 = abcdefghijklmnopqrstxyz; 결과 = abcdefghijklmnopqrstuvwxyz
사례 2 : 시작 = abcdefghijklmnopqrstxyz; 결과 = abcdefghijklmnopqrstxyz
내가 잘못하고 있나? 아니면 iostream에 삽입을 할 수 없습니까?
마지막 또는 파일의 스트림 내용을 확인하고 있습니까? 그냥 추측하지만 어쩌면 fstream 아마도 파괴 또는 일부 파일 동기화 및 iostream하지 암시 적으로 플러시 않습니다. 끝에 플러시를 시도 할 수 있습니다. – Hayt