如何将文件系统路径转换为字符串

时间:2017-07-30 16:01:03

标签: c++ c++17

我正在遍历文件夹中的所有文件,只想将它们的名字放在一个字符串中。我想从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.

1 个答案:

答案 0 :(得分:12)

要将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();
}