2012-10-12 3 views
1

기존 파일의 끝 부분을 어떻게 찾습니까?기존 파일의 끝을 넘어서 어떻게 찾습니까?

나는 1000 바이트 인 test.bin을 가지고 있습니다.

그때 나는 새로운 파일 크기는 1011 바이트 것으로 예상이 예제를 실행 한 후

std::filebuf fbuf; 
fbuf.open("c:\\test.bin", std::ios_base::in | std::ios_base::out | std::ios_base::app | std::ios_base::binary); 
fbuf.pubseekoff(10, std::ios_base::end); 
fbuf.sputc(1); 
fbuf.close(); 

다음 실행합니다. 그러나 기존 파일의 끝에 0x01을 추가하여 1001 바이트로 만듭니다.

흥미롭게도 그것이 새로운 파일 일 때 내가 원하는 방식으로 작동하지만.

Windows 7 x64에서 실행 중이지만 대상 플랫폼은 우분투입니다.

답변

3

std::ios_base::app 플래그를 설정했습니다. 이로 인해 모든 쓰기가 파일의 끝에 발생합니다. 현재 위치에서 쓰기를 수행하려면 파일을 열 때이 플래그를 지정할 수 없습니다.

ios_base::app 추가 파일; 즉, 항상 파일의 끝에 쓰십시오.

+0

즉, 기존 파일에 추가 공간을 신속하게 사전 할당 할 수 없습니까? – expert

+0

그것은 사소한 일입니다. 파일의 끝 부분을 지나서 작성하십시오. 그러나 코드는 그렇게하지 않습니다. 파일의 끝에 *를 씁니다. –

+0

Нузю 그게 내가하려는거야. 나는'pubseekoff'가 파일의 끝을 지나서 위치를 옮길 것을 기대했다. 내 코드에서 무엇을 변경해야합니까? – expert

관련 문제