我如何打开文件进行读写,如果不存在则创建文件而不将其截断?

轨道轻赛

什么是正确的一套关于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,因为我还需要能够使用getput游标随意查找文件

我想,一种解决方法是先实例化一个实例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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

清除Java 7创建文件的方式(如果不存在)

如果不存在,Python中的open()不会创建文件

如何打开(读写)或创建允许截断的文件?

Java FileOutputStream创建文件(如果不存在)

创建文件夹(如果尚不存在)

如果文件尚不存在,可以使用更新API创建文件吗?

如何在Perl中读取文件,如果不存在则创建文件?

创建文件(如果尚不存在)

如果不存在则如何创建CSV文件,然后仅将其附加到Python

如果文件在Python中不存在,则以原子方式创建文件

创建文件(如果不存在),然后向其中写入日志

Powershell创建文件夹(如果不存在)

MSBuild复制或创建文件(如果不存在)

创建文件夹路径(如果不存在)(保存问题)

如果不存在,则在应用程序支持中创建文件夹

如果C ++中不存在该如何创建文件夹?

如果存在则写入文件,如果不存在则创建文件

如何将输出重定向到文件,如果不存在则不创建文件?

如果文件不存在,如何创建空文件

PHP创建文件夹(如果不存在)

C ++创建文件(如果不存在)

PHP脚本创建文件(如果不存在)

如果不存在,则创建文件夹,如果不存在,则不执行任何操作

如果Groovy中不存在,则创建文件

如果不存在,Python不会创建文件

如果文件夹不存在,则在 vbs 中创建文件夹

NodeJS文件流 - 如果文件不存在,如何创建文件?

如果文件不存在,Firestore 创建文件,并收听它

Exceljs 如果不存在则创建文件时出错