迭代可执行文件本身时,std :: filesystem :: recursive_directory_iterator崩溃

时间:2019-03-10 20:40:58

标签: c++ filesystems

for (auto p : std::filesystem::recursive_directory_iterator(get_folder(), std::filesystem::directory_options::skip_permission_denied)) {
    const auto path = p.path().string();
    std::cout << path << std::endl;
}

因此,以上代码在project1.exe中的0x7FFA77095549处发生未处理的异常崩溃:Microsoft C ++异常:内存位置0x72E42FF360的std :: system_error。在崩溃前进行迭代的最后一个目录是源和可执行文件所在的目录。编辑:获取文件夹只是返回用户文件夹

1 个答案:

答案 0 :(得分:0)

已修复!问题是std :: filesystem无法处理从右到左的覆盖(U + 202E),即使使用wstring也不行。那就是我如何解决它的问题

if (p.path().wstring().find(L"\u202E") != std::string::npos)
            continue;
const auto path = p.path().string();
std::cout << path << std::endl;