【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行目