【问题标题】:boost directory iterator提升目录迭代器
【发布时间】:2012-05-09 04:26:03
【问题描述】:

我有这段 Boost 代码可以遍历目录中的文件:

void someFuncToIterateFiles() {

    if( exists( directory ) )
    {
       directory_iterator end ;

       for( directory_iterator iter(directory) ; iter != end ; ++iter ) {
         if ( !is_directory( *iter ) )
         {
             // this is a file 
             cout << iter->path; 

             // rest of the code
         }
       }
    }
}

我发现有时当它读取一个存在并即将开始遍历文件的目录时,程序只是停止并且没有错误或分段错误。其余的代码位根本不执行,函数返回给调用者这很奇怪,因为我以前没有遇到过这样的事情。不会抛出异常,除非这需要我们显式使用 try-catch 异常处理程序。

有人在 Boost 上遇到过这种情况吗?我无法调试,只能使用 cout 语句,因为我的一些依赖库是在发布模式下编译的。

【问题讨论】:

  • 尝试在没有编译器优化的情况下编译你的代码。通过这种方式,您将能够在调试会话期间看到更多内容,特别是您将能够调试 boost 代码
  • @killogre 或者使用volatile 关键字告诉编译器不要优化变量。
  • 你使用的是哪个版本的 boost::filesystem?

标签: c++ boost


【解决方案1】:

path 不是一个字段,它是一个方法,所以你应该这样称呼它:

cout path();

【讨论】:

    猜你喜欢
    • 2012-11-06
    • 2013-05-14
    • 2023-04-02
    • 1970-01-01
    • 2013-12-01
    • 2010-09-14
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多