【问题标题】:What can cause failbit to be set on ofsream::open什么会导致在 ofsream::open 上设置失败位
【发布时间】:2018-01-31 22:28:06
【问题描述】:

当我尝试使用 ofstream::open 写入二进制文件时,故障位被设置,我无法写入文件,异常原因是“basic_ios::clear”。这应该很简单,但我无法弄清楚我做错了什么。

string fname ("/home/tim/data/kv.bin");

file.exceptions (std::ofstream::failbit | std::ofstream::badbit );

try
{
    file.open (fname, ios::binary);
}
catch (std::ofstream::failure e)
{
    string error (e.what());
}

从 xterm 我可以毫无问题地触摸列出的文件名,但每当我尝试以编程方式创建它时都会失败。

我试过了

FILE *fp;
if ((fp = fopen (fname, "w')) == NULL)
{
    int err = errno;
}

它打开文件没有问题。我想我可以使用 C 文件指针来编写我的文件,但我想使用我在其余代码中使用的 C++ 流来保持一致。

有没有办法弄清楚 ofstream::open 失败的原因以及如何解决?

【问题讨论】:

  • 可能helpful
  • 投票结束,除非问题被编辑为包含answer中所述的问题根源。
  • 我如何投票结束?

标签: c++ ofstream


【解决方案1】:

我想通了。我之前在我的函数中使用了 ofstream 并且在尝试使用不同的文件名打开它之前没有关闭它。

对不起大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多