std :: fstream不会创build文件

我试图使用std :: fstream为io文件,并且我想创build该文件,如果它不存在。

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); 

我得到这个结果:“没有这样的文件或目录。”

在这种情况下如何创build文件?

你在调用fstream :: open()的时候指定了std::fstream::in 。 这已知迫使它需要一个现有的文件。

mode参数中删除std::fstream::in ,或者指定std::fstream::trunc和其他标志。

这有点乱,但工作。 如果文件存在,则不覆盖该文件,但如果第一次打开文件失败,则创build一个新文件。

 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 

我遇到了同样的问题。我尝试删除ios :: beg参数,然后它完美的工作。