2012-02-11 2 views
11

매우 간단한 질문이 있습니다. 이진 파일 작업을 처음 시도한 것이므로 힘들 것입니다. 이해가되지 않습니다. 내가하고 싶은 것은 이진 파일에 정수를 쓰는 것이다. 여기이진 파일에 정수 쓰기 (C++)

내가 그것을 어떻게 있습니다 :

#include <fstream> 
using namespace std; 
int main() { 
    int num=162; 
    ofstream file ("file.bin", ios::binary); 
    file.write ((char *)&num, sizeof(num)); 
    file.close(); 
    return 0; 
} 

내가 뭔가 잘못, 어떤 한 경우에 당신이 말해 주 시겠어요?

나를 괴롭히는 부분은 file.write에 줄 지어 있습니다. 이해가 안됩니다.

미리 감사드립니다.

+1

작동합니까? 예상과 다른 점은 무엇입니까? –

+2

Nitpick advice : 1)'reinterpret_cast (& num)'이라고 말하고'file.close()'와'return 0'을 생략하십시오. –

+0

@KerrekSB reinterpret_cast (& num)의 기능에 대해 설명해 주시겠습니까? – eqagunn

답변

19

나를 괴롭히는 부분은 file.write와 같습니다. 나는 을 이해하지 못합니다. 당신이 ofstream.write() 방법의 설명서를 읽어 보면

, 당신은 두 개의 인수를 요청하는 것을 볼 수 있습니다 :

  1. 내용에 데이터의 블록에 포인터가 기록 될를;

  2. 크기 (바이트)를 나타내는 정수 값입니다.

이 문 단지 ofstream.write()에이 두 가지 정보를 제공한다 :

file.write(reinterpret_cast<const char *>(&num), sizeof(num)); 

&num (이 경우 단지 정수 변수) 데이터 블록의 어드레스이며, sizeof(num)는의 크기 이 블록 (예 : Windows 플랫폼의 경우 4 바이트).