【问题标题】:fstream won't create a file [duplicate]fstream 不会创建文件 [重复]
【发布时间】:2025-11-30 02:55:02
【问题描述】:

如果文本文件不存在,我只是尝试创建一个文本文件,我似乎无法让 fstream 执行此操作。

#include <fstream>
using std::fstream;

int main(int argc, char *argv[]) {
    fstream file;
    file.open("test.txt");
    file << "test";
    file.close();
}

我是否需要在 open() 函数中指定任何内容才能让它创建文件?我读到您不能指定ios::in,因为这会期望已经存在的文件存在,但我不确定是否需要为尚不存在的文件指定其他参数。

【问题讨论】:

  • 我认为你必须使用:.open ("test.txt", fstream::in);

标签: c++ file-io fstream


【解决方案1】:

你应该像这样添加 fstream::out 来打开方法:

file.open("test.txt",fstream::out);

有关 fstream 标志的更多信息,请查看此链接:http://www.cplusplus.com/reference/fstream/fstream/open/

【讨论】:

  • 谢谢你,成功了。
  • 我是否不允许对尚不存在的文件执行file.open("test.txt", fstream::in | fstream::out | fstream::binary);
  • 如果你想让 fstream::in 处理一个不存在的文件,你应该添加 fstream::trunc。
  • @haitaka 这是一种解决方法吗?因为这似乎不合逻辑:为了从创建的文件in 生成流,我必须截断流。
【解决方案2】:

您需要添加一些参数。此外,实例化和打开可以放在一行中:

fstream file("test.txt", fstream::in | fstream::out | fstream::trunc);

【讨论】:

    【解决方案3】:

    这样就可以了:

    #include <fstream>
    #include <iostream>
    using std::fstream;
    
    int main(int argc, char *argv[]) {
        fstream file;
        file.open("test.txt",std::ios::out);
        file << fflush;
        file.close();
    }
    

    【讨论】: