【发布时间】: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 失败的原因以及如何解决?
【问题讨论】: