fstream没有创建新文件

时间:2013-06-23 11:41:03

标签: 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);
    xrec.getdata();
    flh.write((char*)&xrec, sizeof(dtbrec));

    flh.close();
}

我认为fstream默认情况下会创建一个新文件'database.txt'(如果它不存在)。关于什么可能出错的任何想法?

2 个答案:

答案 0 :(得分:10)

关于fstream的一些指示:

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

  

f.open(“folder \ file”,ios :: out);

它不起作用,反斜杠必须以反斜杠开头,所以正确的方法是:

  

f.open(“folder \\ file”,ios :: out);

湾如果要创建新文件,则无效:

  

f.open(“file.txt”,ios :: in | ios :: out | ios :: binary);

正确的方法是首先使用ios :: out或ios :: trunc

创建文件
  

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

然后

  

f.open(“file.txt”,ios :: in | ios :: out | ios :: binary);

℃。最后,它可以按照这个答案中的规定顺序, fstream not creating file

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

答案 1 :(得分:1)

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