13

ディレクトリ内のすべてのファイルを繰り返し処理し、その内容を出力したいと考えています。ブーストは反復部分を非常にうまく処理しますが、それを に変換する方法がわかりませんconst char *

boost::filesystem::directory_iterator path_it(path);
    boost::filesystem::directory_iterator end_it;
    while(path_it != end_it){
      std::cout << *path_it << std::endl;

      // Convert this to a c_string
      std::ifstream infile(*path_it);
    }

このドキュメントを読もうとしましたが、stringやのようなものは見つかりませんでしc_str()た。私は両方C++に不慣れで、ソースコードをダンプする代わりに、メンバーが何であり、どの機能が利用可能であるかを基本的に教えてくれるドキュメントのようなものboostを見つけたいと思っていました。javadoc

暴言を吐いて申し訳ありませんが、誰かに変換する方法を教えて*path_itくださいc string

4

2 に答える 2

25

イテレータを逆参照すると、次のものが返されますdirectory_entry

const directory_entry& entry = *path_it;

発見したように、これをoperator<<および と一緒に使用できます。ostream

std::cout << entry << std::endl;

次を使用して文字列を作成できますostringstream

std::ostringstream oss;

oss << entry;

std::string path = oss.str();

stringまたは、から直接パスとしてアクセスできますdirectory_entry

std::string path = entry.path().string();
于 2013-05-01T13:10:22.320 に答える