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

解決


ぐぷたー  2009-05-28 13:22:56  No: 70214  IP: [192.*.*.*]

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 14:38:24  No: 70215  IP: [192.*.*.*]

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

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

編集 削除
tetrapod  2009-05-28 14:46:55  No: 70216  IP: [192.*.*.*]

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

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

編集 削除
ぐぷたー  2009-05-29 18:41:25  No: 70217  IP: [192.*.*.*]

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

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

編集 削除
ぐぷたー  2009-05-29 20:08:18  No: 70218  IP: [192.*.*.*]

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

編集 削除