C++中如何将const std::filesystem::directory_entry转为string类型
解决方案
std::filesystem::directory_entry 类型本身封装了文件的路径信息,你只需要先调用它的path()方法拿到对应的std::filesystem::path对象,再调用string()方法即可转为std::string类型。
核心转换代码
你只需要把循环内的转换逻辑替换为如下代码即可:
str = file.path().string();
完整可运行示例
#include <filesystem> #include <string> #include <iostream> using namespace std; int main() { string path = "/logs"; string str = ""; for (const auto& file : directory_iterator(path)) { // 完成类型转换 str = file.path().string(); // 后续可直接操作str变量 cout << "当前文件路径:" << str << endl; } return 0; }
补充说明
- 你能直接用
cout << file打印路径,是因为std::filesystem::directory_entry重载了<<运算符,内部默认输出持有的路径对象。 - 如果需要获取绝对路径,可以调用
absolute(file.path()).string();如果只需要纯文件名,可以调用file.path().filename().string();需要文件后缀的话可以用file.path().extension().string()。 - Windows平台如果需要宽字符路径,把
string()方法替换为wstring()即可得到std::wstring类型。
内容的提问来源于stack exchange,提问作者Abdullah Chaudhry
相关产品推荐
相关产品推荐

