ファイルへのioにstd :: fstreamを使用しようとしていますが、ファイルがまだ存在しない場合は作成します。
std::fstream my_stream
my_stream.open("my_file_name",std::fstream::binary | std::fstream::in | std::fstream::out);
if(!my_stream)
std::cout<<"error"<<strerror(errorno);
「そのようなファイルやディレクトリはありません」という結果が表示されます。
この場合、どうすればファイルを作成できますか?
fstream :: open() の呼び出しでstd::fstream::in
を指定しています。これは known で、既存のファイルを強制的に要求します。
mode
引数からstd::fstream::in
を削除するか、他のフラグに加えてstd::fstream::trunc
を指定します。
少し面倒ですが動作します。ファイルが存在する場合はファイルを上書きしませんが、最初のオープンが失敗した場合は新しいファイルを作成します。
std::fstream my_stream
my_stream.open("my_file_name",std::fstream::binary | std::fstream::in | std::fstream::out);
if(!my_stream)
{
my_stream.open("my_file_name",std::fstream::binary | std::fstream::trunc | std::fstream::out);
my_stream.close();
// re-open with original flags
my_stream.open("my_file_name",std::fstream::binary | std::fstream::in | std::fstream::out);
}
else
{
// read something
}
// read/write here