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

原文由 Stephen Jacob 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

关于 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 需要已经有一个现有的文件。

原文由 Stephen Jacob 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 built1n 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题