什么是正确的一套关于I / O的标志std::fstream
,在这里我希望能够从读取和写入文件,而不截断的文件,如果它存在,但如果它不创造呢?
我试过了
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
,然后立即将其关闭并打开我真正想要的流,但是如果可以用单个流对象避免的话,那似乎很麻烦。
目前,我得出的结论是std::ios::in
完全可以防止这种情况的发生,因此我必须使用变通办法。
所以:
if (!std::ostream(path.c_str()))
throw std::runtime_error("Could not create/open file");
std::fstream fs(path.c_str(), std::ios::binary | std::ios::in | std::ios::out);
if (!fs)
throw std::runtime_error("Could not open file");
// ... use `fs`
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句