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