感谢基友告知C++17逆天的filesystem,分分钟解决各种系统遍历目录的问题,233
配着正则表达式食用更为美味
真的好简短,下面实现了在目录下找到所有包含z的jpg或者png文件并打印出来
#include<iostream>
#include<string>
#include<filesystem>
#include<regex>//正则表达式
using namespace std;
namespace fs = std::experimental::filesystem;
void visit(string path)
{
regex 为图片(".*z.*\\.(jpg|png)");//包含字母z的所有jpg或png图片
for (auto&fe : fs::directory_iterator(path))
{
auto fp = fe.path();
//std::wcout << fp.filename().wstring() << std::endl;
auto temp = fp.filename();
if (std::regex_match(temp.string(), 为图片))
cout << temp<<endl;
//replace_extension替换扩展名
//stem去掉扩展名
}
}
int main()
{
string path="C:\\palm";
visit(path);
system("PAUSE");
return 0;
}
直接遍历的话下面几行就解决了……
#include<iostream>
#include<filesystem>
using namespace std;
namespace fs = std::experimental::filesystem;
int main() {
string 路径 = "C:\\palm";
for (auto &遍历 : fs::directory_iterator(路径)) {
auto 内容 = 遍历.path();//如果不想要路径加上.filename()即可
cout << 内容<< endl;
}
system("pause");
return 0;
}
里面还有不少功能函数可以解决诸如替换后缀名,只显示文件名字不显示后缀,显示父目录等等……