首页  >  文章  >  后端开发  >  为什么创建文件时 `std::fstream::open()` 会抛出“没有这样的文件或目录”错误?

为什么创建文件时 `std::fstream::open()` 会抛出“没有这样的文件或目录”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 04:22:27321浏览

Why Does `std::fstream::open()` Throw a

std::fstream 的文件创建问题

问题:

使用 std 时: :fstream 用于文件 I/O,在尝试创建文件时遇到“没有此类文件或目录”的错误消息如果它尚不存在。具体来说,以下代码片段导致了该问题:

<code class="cpp">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);</code>

如何解决此问题以确保在必要时创建文件?

答案:

如果在模式参数中指定了 std::fstream::in,则 fstream::open() 函数需要一个不存在的文件。要解决此问题,请从模式标志中删除 std::fstream::in 或在现有标志旁边添加 std::fstream::trunc。

<code class="cpp">// Remove std::fstream::in
std::fstream my_stream;
my_stream.open("my_file_name", std::fstream::binary | std::fstream::out);

// Add std::fstream::trunc
std::fstream my_stream;
my_stream.open("my_file_name", std::fstream::binary | std::fstream::in | std::fstream::out | std::fstream::trunc);</code>

以上是为什么创建文件时 `std::fstream::open()` 会抛出“没有这样的文件或目录”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn