2
我試圖從Visual Studio 2012中的directory_iterator
獲取絕對路徑。在早期版本的Boost庫中可以使用native_file_string()
。沒有可用的功能成員現在返回絕對路徑。我最後不得不目錄路徑與文件名結合:如何從Visual Studio 2012中的directory_iterator獲取絕對路徑<filesystem>
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
將產生完整(絕對)路徑。這是設計嗎?如果我不想遞歸迭代會怎麼樣?
我似乎微軟還沒有實現它。 – 2013-03-05 20:49:52
@PaulJurczak根據[this](http://cpprocks.com/introduction-to-tr2-filesystem-library-in-vs2012/),VS2012中的版本基於Boost.Filesystem v2。你可以看到[這裏](http://msdn.microsoft.com/en-us/library/hh874694.aspx)它的文檔。我認爲相當於'absolute'的函數是['complete'](http://msdn.microsoft.com/en-us/library/hh874892.aspx),但我不確定。 – 2013-03-06 06:55:36
@llonesmiz:你說得對,'完成'的作品。 – 2013-03-06 15:15:32