2

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

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”,如果它不存在。关于什么可能是错的任何想法?

4

2 回答 2

18

关于 fstream 的一些提示:

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

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

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

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

湾。如果你想创建一个新文件,这将不起作用:

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::trunc);

接着

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

C。最后,它可能是按照这个答案中指定的顺序, fstream 没有创建文件

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

于 2013-08-10T10:05:25.590 回答
3

Try using ofstream, it automatically creates a file, if it does not already exist. Or, if you want to do both input, and output on the stream, try using fstream, but you need not specify ios::in|ios::out|ios::binary, because fstream automatically sets it up for you.

于 2013-06-23T12:38:11.137 回答