1

ディレクトリ内のファイルを反復処理する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ステートメントのみを使用します。

4

1 に答える 1

3

パスはフィールドではなく、メソッドであるため、次のように呼び出す必要があります。

cout << iter-> path();

于 2012-05-09T06:43:56.763 に答える