スポンサーリンク

ファイル名を自然ソートする(StrCmpLogicalW)

手順

①ファイル名を取得(wchar_t で )

②自然ソート

③必要ならcharへ変換

というステップで行います。

②StrCmpLogicalWで自然ソート (核心)

この記事の核心自然ソートです。前提として、ファイル名は

std::vector<std::wstring>

で管理されています。

StrCmpLogicalWを使う時はShlwapi.hをインクルード、shlwapi.libをリンクします。

#include <Shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
void sort_file_names(std::vector<std::wstring>& fnlist) {

  std::sort(
    fnlist.begin(),
    fnlist.end(),
//ラムダ関数 [](const std::wstring& n1, const std::wstring& n2) { return StrCmpLogicalW(n1.c_str(), n2.c_str()) < 0; } ); }

①ファイル一覧取得

ファイル名一覧を取得。StrcmpLogicalWがワイド文字専用なので、ファイル一覧の段階からワイド文字で取得します。

https://suzulang.com/win32api-get-file-list/

③必要ならcharへ変換

https://suzulang.com/wchar-t-char-convert/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: