c++ builder XE4, 10.2 Tokyo > fileIO > 最下層フォルダ名を取得する実装


動作確認
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/09)

AAA\\BBB\\CCC\\DDDというフォルダ文字列からDDDを取得する。

Unit1.cpp
String getDeepestDir(String srcstr)
{
    // [AAA\\BBB\\CCC\\DDD]から[DDD]を取得する

    std::unique_ptr<TStringList> list(new TStringList);

    list->StrictDelimiter = true;
    list->Delimiter = L'\\';
    list->DelimitedText = srcstr;

    return list->Strings[list->Count - 1];
}

ビルトイン関数がないのだろうか。

code v0.2

上記の場合srcstrの文字列の最後が\\のようになっていたらL""が戻ってしまう。
ExcludeTrailingPathDelimiter()を使う以下のようにした。

Unit1.cpp
String getDeepestDir(String srcstr)
{
    // [AAA\\BBB\\CCC\\DDD]から[DDD]を取得する

    std::unique_ptr<TStringList> list(new TStringList);

    list->StrictDelimiter = true;
    list->Delimiter = L'\\';
    list->DelimitedText = ExcludeTrailingPathDelimiter(srcstr);

    return list->Strings[list->Count - 1];
}

Countが0の時のエラー処理などは実装していない。