You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从路径提取文件名:Delphi ExtractFileName的C++等效实现(C++ Builder 10.4)

兼容Unicode的路径文件名提取方案(Embarcadero C++ Builder 10.4)
  • 直接调用VCL/RTL内置Unicode函数
    你的项目基于C++ Builder 10.4,可以直接使用RTL提供的ExtractFileName函数,它和Delphi的同名函数行为完全一致,原生支持Unicode,无需转换为char const*:

    #include <System.SysUtils.hpp>
    
    UnicodeString filePath = L"C:\\测试文件夹\\example.txt";
    UnicodeString fileName = ExtractFileName(filePath);
    // 输出结果为 "example.txt"
    

    该函数属于C++ Builder原生RTL,无需引入任何第三方库,直接适配你已有20年历史的项目,不用升级C++17。

  • 手动实现轻量版提取逻辑
    如果需要脱离VCL依赖(或自定义逻辑),可以基于UnicodeString自行实现,核心是定位最后一个路径分隔符并截取后续内容:

    UnicodeString MyExtractFileName(const UnicodeString& path)
    {
        int lastDelimPos = path.LastDelimiter("\\/");
        return (lastDelimPos == -1) ? path : path.SubString(lastDelimPos + 1);
    }
    
    // 使用示例
    UnicodeString filePath = L"/home/user/文档/测试文件.pdf";
    UnicodeString fileName = MyExtractFileName(filePath);
    // 输出结果为 "测试文件.pdf"
    

    这个实现仅依赖C++ Builder的UnicodeString类,完全兼容现有项目的代码结构。

内容的提问来源于stack exchange,提问作者BarryK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:05:31