MFCのFindNextFile関数で、ファイルソートするには?

解決


ぐぷたー  2009-05-28 22:22:56  No: 70214

Visual C++(6.0)MFC環境です。

FindNextFile関数で、C:¥testフォルダにある「*.txt」ファイルを
一覧で取得したいのですが、このときワイルド検索したファイル結果を
ファイル名称でソートしたVector<string>を取得したい。
実現方法がわかりません。
教えてください。

    HANDLE  hFind;
    WIN32_FIND_DATA  FindData;
    
    // 最初の検索
    if ( (hFind = FindFirstFile( "C:\test\*.txt",&FindData )) == INVALID_HANDLE_VALUE ) {
      // エラー
    }
    while ( TRUE ) {
_tprintf("[%s]\n",FindData.cFileName );
      // 次の検索
  if ( FindNextFile( hFind,&FindData ) == FALSE ) {
    break;
  }
  }
// 後始末
FindClose( hFind );


Blue  2009-05-28 23:38:24  No: 70215

FindNextFileはソートした結果を取得できません。
全てのファイルをリストに追加した後、ソートするようにしてくださ。

>Vector<string>
Vector が std::vector であるならば、std::sortやstd::stable_sortを使えば
ソートが可能です。


tetrapod  2009-05-28 23:46:55  No: 70216

そこまでできてるんだったら push_back した後に sort するだけぢゃん
# Vector が std::vector のことならば、の話だけど

FindFirstFile のファイル名指定が正しいか?とか
MFC 使うんなら CFileFind のほうが簡単ぢゃねぇか?とか
まあツッコミどころはいくつもあるわけだけど


ぐぷたー  2009-05-30 03:41:25  No: 70217

>>FindFirstFile のファイル名指定が正しいか?とか
→[\]が1桁になっていました。
  すいません。記述ミスでした。

無事、vectorのソートを利用して期待どおりの結果になりました。


ぐぷたー  2009-05-30 05:08:18  No: 70218

無事解決しましので更新します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加