【VC】フォルダのファイル一覧取得してリストで返す【C++】 http://tanjoin.hatenablog.com/entry/20110810/1312966845
まず、設定として
[プロジェクト(P)]
↓
[hogehogeのプロパティ]
↓
[構築プロパティ]
↓
[プロジェクトの既定値]
↓
[文字セット]
↓
[マルチ バイト文字セットを使用する]
に設定する
【VC】フォルダのファイル一覧取得してリストで返す【C++】 http://tanjoin.hatenablog.com/entry/20110810/1312966845
まず、設定として
[プロジェクト(P)]
↓
[hogehogeのプロパティ]
↓
[構築プロパティ]
↓
[プロジェクトの既定値]
↓
[文字セット]
↓
[マルチ バイト文字セットを使用する]
に設定する
| #include <iostream> | |
| #include <sstream> | |
| #include <vector> | |
| #include <string> | |
| #include <Windows.h> | |
| using namespace std; | |
| class Dir | |
| { | |
| public: | |
| // コンストラクタ | |
| Dir(void){} | |
| // デストラクタ | |
| virtual ~Dir(void){} | |
| // ファイル一覧取得 | |
| // folder : フォルダの絶対パスを入力とする | |
| // 例 : "D:\\Users\\Pictures\\" | |
| static vector<string> read(string folder){ | |
| // 宣言 | |
| vector<string> fileList; | |
| HANDLE hFind; | |
| WIN32_FIND_DATA fd; | |
| // ファイル名検索のためにワイルドカード追加 | |
| // 例 : "D:\\Users\\Pictures\\*.*" | |
| stringstream ss; | |
| ss << folder; | |
| string::iterator itr = folder.end(); | |
| itr--; | |
| if(*itr != '\\') ss << '\\'; | |
| ss << "*.*"; | |
| // ファイル探索 | |
| // FindFirstFile(ファイル名, &fd); | |
| hFind = FindFirstFile(ss.str().c_str(), &fd); | |
| // 検索失敗 | |
| if(hFind == INVALID_HANDLE_VALUE){ | |
| std::cout << "ファイル一覧を取得できませんでした" << std::endl; | |
| exit(1); // エラー終了 | |
| } | |
| // ファイル名をリストに格納するためのループ | |
| do{ | |
| // フォルダは除く | |
| if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) | |
| && !(fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)) | |
| { | |
| //ファイル名をリストに格納 | |
| char *file = fd.cFileName; | |
| string str = file; | |
| fileList.push_back(str); | |
| } | |
| }while(FindNextFile(hFind, &fd)); //次のファイルを探索 | |
| // hFindのクローズ | |
| FindClose(hFind); | |
| return fileList; | |
| } | |
| }; |
| int main(int argc, char *argv[]) | |
| { | |
| // ファイル入力 | |
| std::vector<std::string> backfilelist = Dir::read("D:\\Users\\Pictures\\"); | |
| for(int i = 0; i < backfilelist.size(); i++){ | |
| std::cout << backfilelist[i] << std::endl; | |
| } | |
| return 0; | |
| } |
すみません。質問です。
上記のコードを実行したら以下のエラーが出てきてしまいました。
どうしたらいいでしょうか。
error C2664: 'FindFirstFileW' : 1 番目の引数を 'const char *' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 37行目
error C2440: '初期化中' : 'WCHAR [260]' から 'char *' に変換できません。 52行目