o.write
は文字を書きません。バイトを書き込みます(ios :: binaryでフラグが設定されている場合)。 charは長さが1バイトであるため、charポインタが使用されます。
o.write((char*)a,sizeof(a));
(char*) a
はo.write
を書くべきかのアドレスです。その後、ファイルにsizeof(a)
バイトを書き込みます。文字は格納されず、バイトだけが格納されます。
ファイルを16進エディタで開くと、aがint i = 10
の場合: 0A 00 00 00
(4バイト、x64)です。
読書はアナログです。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main (int argc, char* argv[]){
const char* FILENAM = "a.txt";
int toStore = 10;
ofstream o(FILENAM,ios::binary);
o.write((char*)&toStore,sizeof(toStore));
o.close();
int toRestore=0;
ifstream i(FILENAM,ios::binary);
i.read((char*)&toRestore,sizeof(toRestore));
cout << toRestore << endl;
return 0;
}
もっと具体的になることができますか? –
バイナリファイルに格納された整数値[4バイト]をどのように読み取るかを知りたいと思います。 – user2097891
あなたのコードはすでにそれをしていませんか? –