使用 `ofstream` 似乎不会创建或写入文件

ely*_*ely 5 c++ file-io ofstream

在模拟结束时,我想将一些结果作为附加行写入数据文件。我使用的代码如下,在那里你可以假设outFile是正确分配为std::ofstream,这output_file是一个std::string包含对尚不存在的文件的有效路径,并打印到文件中的变量只是int类型的GET模拟期间的值。

outFile.open(output_file.c_str(), std::ios::out | std::ios::app );
outFile << num_nodes << ", " << tot_s << ", " << tot_c << ", " << tot_d << std::endl;
outFile.close();
Run Code Online (Sandbox Code Playgroud)

我已经检查过它是否使用该ofstream::is_open()函数正确打开了文件并返回false. 但是,我无法弄清楚为什么。我已经尝试了许多不同的文件名和目录路径,所有这些我都检查过并且它们是有效的(没有错别字等)

正在写入的文件只是在桌面上的一个文件夹中,我一直在其中创建文件,所以我不知道它怎么可能是权限问题。如果是权限问题,我该如何检查?

否则,还有什么可以阻止它写入文件?

添加:

跟进评论,在添加对 的调用后perror(),显示“没有这样的文件或目录”错误。有问题的文件路径是:

/home/ely/Desktop/Evolutionary_Dynamics/GamesOnCycle/data/test.data
Run Code Online (Sandbox Code Playgroud)

我希望创建这个文件,并且该路径中的所有目录都存在,它都拼写正确,等等,并且 GamesOnCycle 文件夹或其数据子文件夹没有奇怪的权限问题。请注意,它是一个 linux 系统(Ubuntu 11.04),因此文件路径的正斜杠是正确的,除非我遗漏了 C++ 必须具有 wrt 文件路径的内容。

jos*_*mas 6

由于多种原因,这可能会发生。

1) 文件已经打开。

2)文件路径中的所有目录都没有创建。

3) 缺少文件权限。

如需更多参考,请参阅ofstream::open 何时会失败?