2017-07-30 198 views
-4

我遍歷文件夾中的所有文件,只需要將它們的名稱放在字符串中。我想從std::filesystem::path獲得一個字符串。我怎麼做?如何將文件系統路徑轉換爲字符串

我的代碼:

#include <string> 
#include <iostream> 
#include <filesystem> 
namespace fs = std::experimental::filesystem; 

int main() 
{ 
    std::string path = "C:/Users/user1/Desktop"; 
    for (auto & p : fs::directory_iterator(path)) 
     std::string fileName = p.path; 
} 

不過,我得到以下錯誤:

non-standard syntax; use '&' to create a pointer to a member. 
+3

'p.path'是一個成員函數* *,你不能沒有使用它'()'。嘗試'std :: string fileName = p.path();' –

+0

ya加上一個.string()在結尾如此:std :: string fName = p.path()。string(); –

回答

1

要將std::filesystem::path轉換爲本地編碼的字符串(這是該類型std::filesystem::path::value_type的),使用string()方法。請注意其他*string()方法,它們使您能夠獲取特定編碼的字符串(即,針對UTF-8字符串的u8string())。

實施例:

#include <filesystem> 
#include <string> 

namespace fs = std::filesystem; 

int main() 
{ 
    fs::path path = fs::u8path(u8"愛.txt"); 
    std::string path_string = path.u8string(); 
} 
+0

thx,我不得不改變我的行:std :: string fName = p.path()。string(); –

+0

if #include and namespace fs = std :: filesystem;不起作用試試這個:#include namespace fs = std :: experimental :: filesystem; – jstar