2012-02-11 40 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のアドバイス:1) 'reinterpret_cast (&num)'と言って、 'file.close()'と 'return 0'を省略します。 –

+0

@KerrekSB reinterpret_cast (&num)のしくみを教えてください。 – eqagunn

答えて

19

私に問題を起こしている部分は、file.writeの行ですが、私は を理解していません。

あなたがofstream.write()メソッドのドキュメントを読んでいる場合、あなたはそれは二つの引数を要求していることがわかります:書き込まれる内容のデータのブロックに

  1. ポインタ。

  2. サイズ(バイト単位)を表す整数値。

この文は単にofstream.write()への情報のこれら2つを与える:

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

&numsizeof(num)での大きさ、データのブロック(この場合はちょうど整数変数)のアドレスでありますこのブロック(例えば、Windowsプラットフォームでは4バイト)。

関連する問題