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时,这篇文章可能特别对新手有用,但是你的评论也可以证明对他们有用