【发布时间】:2012-04-18 01:15:49
【问题描述】:
我想检查字符串name 是否引用了我可以打开和读取的文件,因此它可以是常规文件或符号链接。
我第一次使用这个:
std::ifstream in(name.c_str());
if (!in.is_open()) {
// throw exception!
}
但是当name 引用目录名时它没有抛出异常。
现在我正在使用这个:
if (!fs::exists(name) || fs::is_directory(name)) {
// throw exception!
}
但如果它是指向目录的符号链接,它将(可能)不会抛出。这也是同样的道理:
if (!fs::is_regular_file(name) && !fs::is_symlink(name)) {
// throw exception!
}
有没有更好的办法?
【问题讨论】:
标签: c++ boost boost-filesystem