#include <iostream> #include <algorithm> #include <vector> #include <string> #if defined(WIN32) || defined(_WIN32) #include <io.h> #else #include <dirent.h> #endif using namespace std; static void readDirectory(const string& directoryName, vector<string>& filenames, bool addDirectoryName = true) { filenames.clear(); #if defined(WIN32) | defined(_WIN32) struct _finddata_t s_file; string str = directoryName + "\\*.*"; intptr_t h_file = _findfirst(str.c_str(), &s_file); if (h_file != static_cast<intptr_t>(-1.0)) { do { if (addDirectoryName) filenames.push_back(directoryName + "\\" + s_file.name); else filenames.push_back((string)s_file.name); } while (_findnext(h_file, &s_file) == 0); } _findclose(h_file); #else DIR* dir = opendir(directoryName.c_str()); if (dir != NULL) { struct dirent* dent; while ((dent = readdir(dir)) != NULL) { if (addDirectoryName) filenames.push_back(directoryName + "/" + string(dent->d_name)); else filenames.push_back(string(dent->d_name)); } closedir(dir); } #endif sort(filenames.begin(), filenames.end()); } int main(int argc, char* argv[]) { vector<string> images_filenames; readDirectory("./", images_filenames, false); for (int i = 0; i < images_filenames.size(); i++){ cout << images_filenames[i] << endl; } return 0; }
linux--windows获取文件路径
最新推荐文章于 2022-12-04 15:14:24 发布