【发布时间】:2018-09-13 16:44:03
【问题描述】:
如下函数:
void foo(const std::string& dir)
{
for (auto& el : std::filesystem::recursive_directory_iterator(dir)) {
std::cout << el.path() << '\n';
}
}
当用于:
int main()
{
std::string p = "C:\\";
foo(p);
}
当它到达 Windows 10 上的某个文件夹(我假设)时引发异常。代码是在支持 C++17 的 VS 2017 上编译的。 异常消息是:
recursive_directory_iterator::operator++: The system cannot find the path specified.
使用std::filesystem::directory_iterator 时也会发生相同的行为。
为什么会在该特定文件夹上引发异常?
【问题讨论】:
-
您在 Windows 10 中有一个 Documents and Settings 文件夹吗?
-
同意应该是
Users说我怀疑这是一个权限问题,因为普通用户无权遍历此类文件夹的子文件夹。 -
如果 Windows 10 是从 Windows 7 升级的,可能是一个剩余的连接点。
-
@Eljay Windows 7 也有一个用户文件夹。 IIRC Windows XP 是最后一个拥有 Documents and Settings 文件夹的。
-
@NathanOliver • XP 有一个 Documents and Settings 文件夹。 Windows 7 使用一个连接点来向后兼容 XP 时代的应用程序。 (怎么没人再谈 Vista 了?哈哈)
标签: c++ windows-10 c++17