std::vector<std::wstring> getfiles(std::wstring path) { HANDLE hFind; WIN32_FIND_DATA win32fd; if (path.back() != L'\\') {//最後を\で終了するようにする path += L'\\'; } path += L"*.*";//ファイル一覧取得時のワイルドカード
//ここに結果を保存 std::vector<std::wstring> files_ws; hFind = FindFirstFile(path.c_str(), &win32fd); if (hFind == INVALID_HANDLE_VALUE) { return files_ws; //一覧が取得できそうにないなら終了 } do { if (win32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
//ディレクトリの時は win32fd.cFileName にディレクトリ名が入っている
//ここで再起などするとさらに深い階層を得られる } else { //ファイル名登録 files_ws.push_back(win32fd.cFileName); } } while (FindNextFile(hFind, &win32fd)); FindClose(hFind); return files_ws; }
各関数・および構造体は、ワイド文字用とマルチバイト文字用で分かれている
tchar用 | マルチバイト文字用 | ワイド文字用 |
WIN32_FIND_DATA | WIN32_FIND_DATAA | WIN32_FIND_DATAW |
FindFirstFile | FindFirstFileA | FindFirstFileW |
FindNextFile | FindNextFileA | FindNextFileW |