c++ - 为什么 fstream.fail() 会返回 true 或 false

标签 c++

我正在处理一些已经提供的代码。有一个包含 2 个 fstream.fails() 的 if 语句。代码不断返回 true,我不确定这是因为提供的代码有问题还是我遗漏了什么。

我四处搜索,试图更好地理解可能发生的事情,但由于我是 C++ 的新手,我发现很难找到有助于我理解可能发生的事情的答案。

我认为可能存在问题的提供的代码。

bool Navigation::BuildNetwork(const string &fileNamePlaces, const string &fileNameLinks)
{
    fstream finPlaces(fileNamePlaces);
    fstream finLinks(fileNameLinks);
    if (finPlaces.fail() || finLinks.fail()) return false;
    ifstream();

    // Add your code here   
}

调用“构建网络”函数的地方

ACW_Wrapper wrapper("log.txt");

    // Build Navigation
    wrapper.startTimer();
    Navigation nav;
    if (nav.BuildNetwork("Places.csv", "Links.csv")) {
        const auto elapsed = wrapper.stopTimer();
        std::cout << std::fixed << std::setprecision(1) << "BuildNetwork - " << elapsed << " microseconds" << std::endl;
    }
    else {
        std::cout << "\n*** Error *** BuildNetwork" << std::endl;
    }

我希望它返回 false,因为这是提供的代码,但我不确定是否需要添加一些东西来获得预期的结果。

最佳答案

来自ios::fail文档:

true if badbit (Read/writing error on I/O operation) and/or failbit (Logical error on i/o operation) are set.

这表明至少两个文件之一没有打开成功。

问题不在代码中,问题在于您的程序试图打开可能找不到的文件(或者它没有权限)。

将文件复制到与您的可执行文件相同的工作区(文件夹),然后重试。

关于c++ - 为什么 fstream.fail() 会返回 true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548823/

相关文章:

c++ - decltype(*this) 等效于外部函数体

c++ - 在 C++ 文件中包含 Objective-C 头文件

c++ - 修改大型动态大小的 3D 数组 mex/C++

c++ - g++ 尝试(失败)为共享对象静态链接到 libstdc++

c++ - 单击按钮后,工具提示不再显示

c++ - 在 C++ openmp 中使用自旋锁

c++ - SFML 只绘制一些 Sprite

c++ - visual studio 内联程序集发出字符串宏

c++ - 网络多线程

c++ - 如何创建一个返回数组的函数