gpt4 book ai didi

c++ - 使用库C++中的recursive_directory_iterator时,运行时库错误abort()引发

转载 作者:行者123 更新时间:2023-12-02 10:37:06 25 4
gpt4 key购买 nike

我正在尝试列出计算机中的所有目录和文件,并希望使用DIR和FILES。

注意:

I'm on Windows platform. Using Visual Studio 2019 Community edition. And FYI running the compiled binary as Administrator because of the permission issues on windows. Please do run as Administrator to reproduce the error.



在这里,我使用的是 recursive_directory_iterator库中的 <filesystem>,现在它是 c++ 17 标准。

这是一个基本的代码片段:
#include <iostream>
#include <windows.h>
#include <vector>
#include <filesystem>


namespace fs = std::filesystem;
using namespace std;

string f_path = "E:\\";


void func1(string file_path)
{

vector<string> my_paths{};

for (auto& p : fs::recursive_directory_iterator(file_path))
{
cout << p.path() << endl;

}


}


int main()
{


func1(f_path);
return 0;


}

这是此代码引发的错误。

enter image description here

我是Cpp的新手,无法解决此问题。感谢您抽出宝贵的时间为我提供帮助。

最佳答案

要跳过“访问被拒绝”错误,应使用替代循环和std::filesystem::recursive_directory_iterator::increment而不是std::filesystem::recursive_directory_iterator::operator++。在std::filesystem::recursive_directory_iterator::operator++, std::filesystem::recursive_directory_iterator::increment异常(exception)部分中对此进行了描述。波纹管之类的东西(无需编译和测试即可编写)

void func1(const string& file_path) {
std::error_code os_error;
fs::recursive_directory_iterator walker(file_path);
for (auto i = fs::begin(walker); i != fs::end(walker); i = i.increment(os_error)) {
if (!os_error)
std::cout << i->path() << std::endl;
}
}

关于c++ - 使用<filesystem>库C++中的recursive_directory_iterator时,运行时库错误abort()引发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59826041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com