gpt4 book ai didi

c++ - boost 文件系统中的段错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:25 25 4
gpt4 key购买 nike

我有一个函数可以遍历指定目录中的所有文件和目录。
为此,我使用了 boost 文件系统。
这是它的代码:-

void Utility::index(string IPath)
{
path p(IPath) ;
string extension ;
directory_iterator end ;
for(directory_iterator it(p); it<end; ++it)
{
lastPath = it->path().string() ;
cout<<lastPath<<endl ;
if(is_symlink(it->path()))
{
//cout<<"Found a symlink : "<<it->path()<<endl ;
}
else if (is_regular_file(it->path()))
{
extension = lastPath.substr(lastPath.find_last_of(".")+1) ;
master<<lastPath<<endl ;
}
else if(is_directory(it->path()))
{
try
{
index((it->path()).string()) ;
}
catch(boost::filesystem3::filesystem_error e)
{
cout<<e.what()<<endl ;
}
}
}
}

当我在目录“/”上运行这个函数时,它给我分段(错误)。
查看 gdb 中的回溯,我无法理解问题出在哪里。

回溯是:- Backtrace

最佳答案

取消引用或递增有效的directory_iterator can throw .

所有带有 it->++it 的代码都需要放在 try block 中以处理错误情况。考虑扩展现有的 try block 以包含该代码。

关于c++ - boost 文件系统中的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206142/

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