2

directory_iteratorVisual Studio 2012から絶対パスを取得しようとしています。以前のバージョンの Boost ライブラリでは可能でしたnative_file_string()。現在使用可能な関数メンバーはどれも絶対パスを返しません。ディレクトリパスとファイル名を組み合わせる必要がありました:

string         filePath = "C:\\Eigen\\CMakeLists.txt";
string         prefix   = path (filePath).parent_path().string() + "/";
vector<string> fullPaths;  // Full paths of all files in directory.

for (auto i = directory_iterator (path (filePath).branch_path()); i != directory_iterator(); ++i) 
    fullPaths.push_back (prefix + i->path().string());

フルパスを返すことができるディレクトリ反復子を持つ方法はありますか? 上記のループで、私は試しました:

auto s1 = i->path().branch_path();
auto s2 = i->path().directory_string();
auto s4 = i->path().file_string();
auto s5 = i->path().root_path();
auto s6 = i->path().parent_path();
auto s7 = i->path().string();
auto s8 = i->path().basename();
auto s9 = i->path().filename();
auto sa = i->path().root_name();
auto sb = i->path().relative_path();

いずれもフルパスを返しません。

編集:recursive_directory_iterator代わりに使用directory_iteratorすると、完全な(絶対)パスが生成されることに気付きました。これは設計によるものですか?再帰的な繰り返しが必要ない場合はどうすればよいですか?

4

1 に答える 1

3

absolute()おそらく、非メンバー関数である を探しているでしょう。

于 2013-03-05T16:49:36.380 に答える