我正在尝试将std :: fstream用于io文件,如果文件尚不存在,我想创建该文件。
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);
我得到了这个结果: “没有这样的文件或目录。”
在这种情况下如何创建文件?
答案 0 :(得分:41)
您在致电fstream::open()时指定了std::fstream::in
。这是known以强制它需要现有文件。
从std::fstream::in
参数中删除mode
,或者除了其他标记外还指定std::fstream::trunc
。
答案 1 :(得分:10)
它有点乱,但有效。如果文件存在,则不会覆盖该文件,但如果第一次打开失败,则会创建一个新文件。
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