我正在尝试使用ofstream类将一些东西写入文件,但所发生的只是文件被创建,然后什么都没有。我有一些简单的代码在这里:为什么ofstream有时会创建文件但无法写入文件?
#include <iostream>
#include <fstream>
#include <cstring>
#include <cerrno>
#include <time.h>
using namespace std;
int main(int argc, char* argv[])
{
ofstream file;
file.open("test.txt");
if (!file) {
cout << strerror(errno) << endl;
} else {
cout << "All is well!" << endl;
}
for (int i = 0; i < 10; i++) {
file << i << "\t" << time(NULL) << endl;
}
file.flush();
file.close();
return 0;
}
当我创建一个控制台应用程序,一切工作正常,所以我怕这个代码是不能完全代表。但是,我在一个更大的项目中使用这样的代码 - 说实话 - 我不完全理解(Neurostim)。我应该编写一些编译成可以由Neurostim加载的dll的类。
当代码运行时,会创建“test.txt”,然后“没有错误!”被打印出来,因为这显然是来自strerror的输出。显然这是错误的。该应用程序运行完美否则,并没有分阶段的事实,我试图写入一个损坏的流。它只是不这样做。在我看来,权限没有问题,因为该文件实际上已经创建。
有没有人有任何想法什么样的事情可能会导致这种奇怪的行为? (我在WinXP Pro SP3上并使用Visual C++ 2008 Express Edition)
谢谢!
本质上,你发布的代码示例工作?老兄..请重复错误! – Jacob 2009-10-16 16:41:10
我可以发布整个项目,但我想你们不想为我编写数千行代码。代码示例是为了说明发生了什么以及应该发生什么。部分问题正是因为我不知道是什么导致了这个错误,我不知道如何重现它。这就是为什么我要求可能导致这种行为的事情。 – Jordi 2009-10-16 17:55:58