【问题标题】:Getting segmentation fold when reading a list of files in a folder读取文件夹中的文件列表时获取分段折叠
【发布时间】:2014-03-03 21:32:49
【问题描述】:

我正在使用下面的代码,改编自this 线程。我能够获取文件夹中的文件列表,但最后出现分段错误。知道为什么会这样吗?
有没有办法在for循环中获取当前文件(完整路径)的std::string?

 boost::filesystem::path path("my_path");

 static void myfunction()
 {
     boost::filesystem::directory_iterator end_itr;
     // path is a static variable, defined somewhere else
     for(boost::filesystem::directory_iterator dir_iter(path); 
                                    dir_iter != end_itr;  ++dir_iter)
         if( boost::filesystem::is_regular_file(dir_iter->status()) )
         {
             // print


         }
  }

【问题讨论】:

  • 你能显示end_itr和path的初始化吗?
  • 已更新。它应该自动初始化。
  • 我猜 sn-p 不完整......一个常见的错误是,在循环之后对 dir_iter 做一些事情,然后这是无效的......

标签: c++ boost filesystems segmentation-fault


【解决方案1】:

也许你错过了以下几行:

namespace fs = boost::filesystem;
fs::directory_iterator end_itr;

试试

cout << "entry: " << dir_iter->path().filename() << "\n";
cout << "entry path: " << dir_iter->path() << "\n";

在循环中

参考: - http://www.boost.org/doc/libs/1_49_0/libs/filesystem/v3/doc/reference.html#Class-directory_entry - http://www.boost.org/doc/libs/1_49_0/libs/filesystem/v3/doc/reference.html#class-path

【讨论】:

  • 我有 end_itr 声明。它只是在循环结束时给我分段错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2015-09-08
  • 2017-02-25
相关资源
最近更新 更多