gpt4 book ai didi

c++ - 为什么 ofstream 有时会创建文件但不能写入文件?

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:41 24 4
gpt4 key购买 nike

我正在尝试使用 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)

谢谢!

最佳答案

只是一个想法:- 在您的真实代码中,您是否重新使用了您的流对象?

如果是这样,您需要确保调用clear()在重新使用对象之前在流上,否则,如果以前有错误状态,它将不起作用。我记得,如您在问题中所述,不在这样的流上调用 clear() 会导致无法写入的空文件。

关于c++ - 为什么 ofstream 有时会创建文件但不能写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com