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参数,然后它完美的工作。