【发布时间】:2009-05-26 01:22:57
【问题描述】:
我的代码如下所示:
int main () {
fstream file;
file.open("test.bin", ios::out | ios::binary);
if(!file.is_open())
{
return -1;
}
int n = 3;
file.write(reinterpret_cast<char*>(&n), sizeof(n));
file.close();
return 0;
}
当我单独运行它时,它以-1退出,因此显然它无法打开“test.bin”。但是,如果我将一个空白记事本文件保存为“test.bin”并运行它,它就可以正常工作。我想知道的是,如果名为“test.bin”的文件尚不存在,我如何让我的 C++ 程序自动生成一个空文件“test.bin”。
【问题讨论】:
-
再试一次。由于您将 ios::in 更改为 ios::out,所以它工作得很好。
-
它与
file.write无关,因为程序在file.write之前到达return -1,问题是它根本没有打开test.bin,导致程序在到达file.write之前结束。 -
该程序在我的 VS2008 下运行良好,因此您可能想查看该文件是否已经存在,它的权限是什么,您尝试在哪个目录中创建它等等。代码很好。它创建 bin 文件,然后写入整数 3。失败时的 rdstate() 是什么?
标签: c++ file-io binary-data