C++ fstream未创建新文件

C++ fstream未创建新文件,c++,file-io,fstream,C++,File Io,Fstream,我正在尝试学习动态文件访问。我的代码如下: 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); xr

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

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
,但不需要指定
ios::in | ios::out | ios::binary
,因为
fstream
会自动为您设置它。

有关fstream的一些指针:

a。如果使用反斜杠指定目录,例如使用 fsf

f、 打开(“文件夹\文件”,ios::out)

这行不通,反斜杠之前必须加反斜杠,因此正确的方法是:

f、 打开(“文件夹\\文件”,ios::out)

b。如果要创建新文件,此操作将不起作用:

f、 打开(“file.txt”,ios::in | ios::out | ios::binary)

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

f、 open(“file.txt”.ios::out)或f.open(“file.txt”,ios::trunc)

然后

f、 打开(“file.txt”,ios::in | ios::out | ios::binary)

c。最后,它可以是这个答案中指定的顺序,


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

欢迎使用堆栈溢出!以前有人问过这个问题:@ThomWiggers哇,谢谢你,但是如果没有指定ios::in,那么数据如何存储在文件中?@Alexandrubarbrosie谢谢,我知道如何使用ifstream和outstream,但我想使用fstreamyor我们的示例显示的是前斜杠,而不是反斜杠。你不需要逃避前斜杠。感谢Buge,我编辑了它,我在学习fstream时使用了response。虽然我现在知道并主要使用正斜杠,但我不想编辑内容(使用反斜杠),因为我个人认为,在开始学习fstream时,这篇文章可能特别对新手有用,但是你的评论也可以证明对他们有用