如果我想要读写文件,而且不想截断已存在的文件,但是如果文件不存在则创建它,那么std::fstream
的正确I/O标志集是什么?
我尝试过
std::ios::binary | std::ios::in | std::ios::out
std::ios::binary | std::ios::in | std::ios::out | std::ios::ate
但是这两种方法都不能在文件不存在时创建文件。
我不想使用std::ios::app
,因为我还需要能够在文件中任意寻找位置,包括游标的get和put。
我想到的一个解决方法是首先实例化一个std::ofstream
对象,然后立即关闭它并打开我真正想要的流,但如果可以用单个流对象避免这种情况,则会显得混乱。
c_str()
。如果Boost文件系统可以为您完成此操作(我不确定),那么您只需等待到C++17。;-) - Cheers and hth. - Alfc_str()
的原因是,尽管如果任何人阅读此内容并使用 C++11 或更高版本,则显然是正确的。顺便问一下,03x 中是否包括了std::string
构造函数? - WhozCraigc_str
确实在与该标记配对时有意义。感谢您提供的信息! - WhozCraig.c_str()
。 :) - Lightness Races in Orbitstd::ostream
构造函数时忘记添加std::ios::binary | std::ios::app
了。如果没有这些标志,文件将被截断,如果它已经存在,这是你说过不想要的事情。当我偶然发现这个问题时,我也不想要这种情况 :) - user1593842