gpt4 book ai didi

c++ - 使用 boost::filesystem 递归列出目录文件

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:48 25 4
gpt4 key购买 nike

由于类 recursive_directory_iterator(我不必编写递归代码),我正在使用新的 boost v1.5.3 来执行如下任务:

void ListDirRec(const char *Dir, vector<string>& DirFileList, const char* ext)
{
recursive_directory_iterator rdi(Dir);
recursive_directory_iterator end_rdi;

DirFileList.empty();

string ext_str0(ext);
for (; rdi != end_rdi; rdi++)
{
rdi++;
//cout << (*di).path().string() << endl;
cout << (*rdi).path().string() << endl;

//cout << " <----- " << (*rdi).path().extension() << endl;

//string ext_str1 = (*rdi).path().extension().string();
if (ext_str0.compare((*rdi).path().extension().string()) == 0)
{
DirFileList.push_back((*rdi).path().string());
}
}

具有特定扩展名的函数列表文件。此函数适用于某些情况,但经常返回“断言失败错误”,例如:

**** Internal program error - .... assertion (m_imp.get()) ... operations.hpp(952): dereference of end recursive_directory_iterator

我几乎没有弄清楚这个错误的原因。任何尝试..可以帮助吗?在此先感谢您的帮助

最佳答案

您在循环内和 for 声明中递增 rdi:

for (; rdi != end_rdi; rdi++)
{
rdi++;

这意味着 rdi 在您的循环中可能是 end_rdi(结束迭代器,表示经过最后一个元素)。你这样做有什么理由吗? (如果这是故意的,您应该检查以确保 rdi != end_rdi 在递增后再次确认。)

关于c++ - 使用 boost::filesystem 递归列出目录文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182980/

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