即使使用完整路径,文件也无法使用C ++ fstream打开

时间:2014-02-01 14:34:43

标签: c++ ifstream

    string mapFile;

    cout << "Enter the file name : ";
    cin >> mapFile;

    ifstream mapfh;
    mapfh.open(mapFile.c_str());
    if(mapfh.is_open()) { ... }
    else //if board file did not open properly
    {
        throw;
    }
    mapfh.close();

我在命令行中使用g ++进行编译。每当我输入文件时(即使使用完整路径,即/User/...etc./file.txt),它也会抛出错误。我知道输入是好的,但无论出于何种原因,开放总是失败。

1 个答案:

答案 0 :(得分:0)

这不是完全可移植的,但如果您解释errno

,您将获得更明智的输出
#include <cerrno>
#include <cstring>

...
if(mapfh.is_open()) { ... }
else //if board file did not open properly
{
    std::cout << "error: " << strerror(errno) << std::endl; 
    throw;
}

如果您的政策是将错误传达为例外use iostreams native support for the exceptions

ifstream mapfh;
mapfh.exceptions(std::ios::failbit);
try {
    mapfh.open(mapFile.c_str());
    ...
    mapfh.close();
} catch (const std::exception& e) {
    std::cout << e.what() << " : " << std::strerror(errno) << std::endl;
}