文件流不会打开

时间:2014-08-20 15:05:10

标签: c++ c++11 ofstream

我将以下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标志)。

我不确定为什么溪流不会打开。

感谢。

1 个答案:

答案 0 :(得分:5)

文件流可能由于多种原因而无法打开,例如路径无效,访问是否被拒绝,或者文件是否已打开以便在另一个程序中写入。

这些错误与操作系统有关,因此没有标准的报告方式。但是,您可以使用this question的答案获取错误代码。

如果你正在使用Windows,请小心;如果由于与权限无关的各种原因报告错误代码5(访问被拒绝)。