私はこのようなコードがあります。C++に.binファイルを作成する関数がありますか、またはこのコードに何かがありませんか?
int main() {
fstream file;
file.open("test.bin", ios::out | ios::binary);
if(!file.is_open())
{
return -1;
}
int n = 3;
file.write(reinterpret_cast<char*>(&n), sizeof(n));
file.close();
return 0;
}
を、私は一人でそれを実行すると、それは「test.bin」を開くことができませんでしたので、明らかに、-1で終了します。しかし、空白のメモ帳ファイルを "test.bin"として保存して実行すると正常に動作します。私が疑問に思うのは、 "test.bin"というファイルが既に存在しない場合、空のファイル "test.bin"を自動的に生成するために私のC++プログラムを得る方法です。
もう一度お試しください。あなたはios :: inをios :: outに変更して以来、うまく動作します。 – paxdiablo
'file.write'とは何の関係もありません。なぜなら、プログラムは' file.write'の前に 'return -1'に達し、問題は' test.bin'をまったく開いていないからですそれが 'file.write'に到達する前に終了します。 –
そのプログラムは、VS2008でうまく動作するので、ファイルがすでに存在するかどうか、そのパーミッションは何か、どのディレクトリにそれを作成しようとしているかなどを調べることができます。コードは問題ありません。 binファイルを作成し、整数3を書き込みます。失敗した場合のrdstate()は何ですか? – paxdiablo