fstream未创建新文件

fstream not creating new file

本文关键字:文件 新文件 创建 fstream      更新时间:2023-10-16

我正在尝试学习动态文件访问。我的代码如下:

int main()
{
    dtbrec xrec; // class object
    fstream flh;
    // Doesn't create a new file unless ios::trunc is also given.
    flh.open("database.txt", ios::in | ios::out | ios::binary);
    flh.seekp(0,ios::end);
    xrec.getdata();
    flh.write((char*)&xrec, sizeof(dtbrec));
    flh.close();
}

我认为fstream默认情况下会创建一个新文件"database.txt",如果它不存在的话。有什么可能出错的想法吗?

关于fstream:的一些指针

a。如果使用反斜杠指定目录,例如使用fstream f;

f.open("文件夹\文件",ios:out)

它不起作用,反斜杠前面必须有一个反斜杠,所以正确的方法是:

f.open("文件夹\\文件",ios:out)

b。如果你想创建一个新文件,这是行不通的:

f.open("file.txt",ios:in|ios:out|ios:binary)

正确的方法是首先创建文件,使用ios:out或ios:trunc

f.open("file.txt".ios::out)或f.open("file.txt",ios:trunk)

然后

f.open("file.txt",ios:in|ios:out|ios:binary)

c。最后可以按照这个答案中指定的顺序,fstream未创建文件

基本上ios::in要求已经有一个现有的文件。

尝试使用ofstream,如果它还不存在,它会自动创建一个文件。或者,如果您想在流上同时进行输入和输出,请尝试使用fstream,但不需要指定ios::in|ios::out|ios::binary,因为fstream会自动为您设置。

除了Stephen Jacob说的,我发现我需要做

f.open("file.txt",fstream::trunc|fstream:::out);

以便实际生成文件。只是做trunk没用。