VC++2008でファイル検索。

すっかりPHPに慣れてしまっていて、C++でファイル検索をしようとしても
スグにやり方は思い浮かびません(´・ω・`)
PHPならglobでスグに終わるのに…


愚痴ってても仕方が無いので、ネットで調査しつつ取り掛かることにしました。

■「FindFirstFile」「FindNextFile」等を使う。

スグにヒットしたのがこれ。
分かりやすそうだったので早速取り入れてみたのですが、

'FindFirstFileW' : 1番目の引数を 'std::wstring' から 'LPCWSTR' に変換できません。

…というエラーが発生しました(´・ω・`)


ネットでサンプルコードを探していたら「1番目の引数」にCStringを使っているものが
あったのですが、「Visual C++ 2008 Express Edition」ではCStringは使えないようです…


std::stringかstd::wstringなら使えるので、これらを「c_str()」を使ってLPCSTRやLPCWSTR
へ変換すれば良いとのこと!
※なお、いちいち

std::〜

と書くのが面倒だったり、美しくないと感じる時は、

using namespace std;

と書いておくことで、「std::」を省略することが出来ます。


何やかんやでコンパイルは通るようになり、無事にプログラムも起動することは確認
したのですが、フォルダ内のファイル全てが取得できていないことに気付きました(´・ω・`)
FindNextFileがきいていないのか!!?


3時間ぐらいハマった挙句、断念…orz

■GetFilesを使う。

この場合「ファイルを検索」ではなく「ファイルを列挙」になるそうです。。

using namespace System;
using namespace System::IO;


int main(){


 array^dirs = Directory::GetFiles("input2/","*.html");
 Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
 while ( myEnum->MoveNext() ){
  Console::WriteLine( myEnum->Current );
 }


}