fstream不会创建文件

rap*_*yen 21 c++ file-io fstream

我只是想创建一个文本文件,如果它不存在,我似乎fstream无法做到这一点.

#include <fstream>
using std::fstream;

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

我是否需要在open()函数中指定任何内容才能使其创建文件?我已经读过您无法指定ios::in,因为预期已存在的文件存在,但我不确定是否需要为尚不存在的文件指定其他参数.

hai*_*aka 18

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

file.open("test.txt",fstream::out);
Run Code Online (Sandbox Code Playgroud)

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

  • 如果你想让fstream :: in处理一个不存在的文件,你应该添加fstream :: trunc. (5认同)
  • 谢谢,这就是诀窍. (2认同)
  • @haitaka 这是一个解决方法吗?因为这看起来不合逻辑:为了从创建的文件“in”创建流,我必须截断该流。 (2认同)

小智 11

你需要添加一些参数.实例化和开放可以放在一行:

fstream file("test.txt", fstream::in | fstream::out | fstream::trunc);
Run Code Online (Sandbox Code Playgroud)