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),它也会抛出错误。我知道输入是好的,但无论出于何种原因,开放总是失败。
答案 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;
}