gpt4 book ai didi

c++ - 如何打开一个文件进行读写,如果它不存在则创建它,而不截断它?

转载 作者:IT老高 更新时间:2023-10-28 23:02:16 33 4
gpt4 key购买 nike

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放置光标。

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

关于c++ - 如何打开一个文件进行读写,如果它不存在则创建它,而不截断它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483349/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com