我将以下C ++代码作为更大程序的一部分:
/* Open the output streams */
std::ofstream outputFile;
outputFile.open(outputName);
std::ofstream outputFile1;
outputFile1.open(outputName1);
std::ofstream outputFile2;
outputFile2.open(outputName2);
std::cout << outputFile.is_open() << " " << outputFile1.is_open() << " " << outputFile2.is_open() << std::endl;
if (inputFile.is_open() && outputFile.is_open() && outputFile1.is_open() &&
outputFile2.is_open())
...
它应该打开几个输出文件流,然后 - 如果它们全部打开 - 执行一系列操作,写入每个文件流。然而,该程序提前终止,因为流永远不会打开:
0 0 0
Filestream or output streams could not open, ending program!
变量outputName是std :: strings,我认为在C ++ 11中是允许的(我在OpenBlocks编译器选项中为C ++ 11启用了-std标志)。
我不确定为什么溪流不会打开。
感谢。
答案 0 :(得分:5)
文件流可能由于多种原因而无法打开,例如路径无效,访问是否被拒绝,或者文件是否已打开以便在另一个程序中写入。
这些错误与操作系统有关,因此没有标准的报告方式。但是,您可以使用this question的答案获取错误代码。
如果你正在使用Windows,请小心;如果由于与权限无关的各种原因报告错误代码5(访问被拒绝)。