2014-08-31 4 views
0

미리 길이를 알지 못하고 그 길이 앞에 일련의 숫자 (2 진수로)를 쓸 수있는 방법은 무엇입니까?ofstream을 사용하여 임시 버퍼로 파일에 쓰기

숫자 시리즈를 임시 버퍼 (예 : buf.write())에 쓰고, 버퍼 길이를 결정한 다음 나중에 버퍼를 ofstream (예 : ofs << buf)으로 복사 할 수 있습니까?

+0

실제로 무엇을하려고합니까? – 0x499602D2

+0

1. 잘 모르는 경우 어떻게 길이를 쓸 수 있습니까? 2. 예. –

+0

1. 버퍼에 데이터 쓰기 - 2. 버퍼 길이 결정 - 3. 파일에 길이 쓰기 - 4. 파일에 데이터 쓰기 – Midas

답변

2

파일에 이진 모드로 쓰고 있으므로 수량의 위치를 ​​예약하십시오.

예를 들어 양에 대해 32 비트 값을 사용합니다. 파일 시작 부분에 다음과 같이 쓸 수 있습니다.

uint32_t number_size = 0U; 

// Open output file for read & write. 
// Reserve space for the quantity by writing dummy value. 
output_file.write((char *)&number_size, sizeof(number_size)); 

// Perform calculations & writing to file, incrementing "number_size" 

// Write the number size to the top of the file: 
output_file.seekp(0, SEEK_BEG); 
output_file.write((char *)&number_size, sizeof(number_size)); 

어디서나 수량 변수를 배치 할 수 있으며 파일 위치 만 기억하면됩니다. 작업이 끝나면 해당 위치를 찾아서 작성하십시오.

+0

나는 이것을 고수 할 것입니다. 감사합니다. – Midas

관련 문제