方法一
#include <io.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<string> getFiles(string path, string file_format){
vector<string> files;
intptr_t hFile = 0;
struct _finddata_t fileinfo;
string p, file_formatName;
if (0 != strcmp(file_format.c_str(), "")){
file_formatName = "\\*." + file_format;
}
else{
file_formatName = "\\*";
}
if ((hFile = _findfirst(p.assign(path).append(file_formatName).c_str(), &fileinfo)) != -1){
do{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
return files;
}
int main() {
for (auto x : getFiles("C:\\Users\\Jessica\\source\\repos\\202005Mat_Degisn_01\\202005Mat_Degisn_01\\test", "txt")) {
cout << x << endl;
}
return 0;
}
可以获取指定目录下的所有置定后缀文件的绝对路径。
方法二
#include <string>
#include <vector>
#include <iostream>
#include <experimental/filesystem>
using namespace std;
vector<string> getFiles(string path) {
vector<string> files;
for (std::experimental::filesystem::path p : std::experimental::filesystem::recursive_directory_iterator(path)) {
files.push_back(p.filename().string());
}
return files;
}
int main() {
for (auto x : getFiles("C:\\Users\\Jessica\\source\\repos\\202005Mat_Degisn_01\\202005Mat_Degisn_01\\test")) {
cout << x << endl;
}
return 0;
}
直接获取指定目录下的所有文件。
用法并没有什么大的区别,建议用方法一。