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

如何在C++/WinRT中从URI对象提取带扩展名的文件名

解决方案

C++/WinRT 配套的 UWP 运行时库已经提供了开箱即用的实现,不需要自己手写字符串切割逻辑。

你用到的 winrt::Windows::Foundation::Uri 类自带 Name() 属性,返回值就是 URI 路径最后一段带完整扩展名的文件名,自动忽略查询参数、哈希片段,同时自带 URI 解码能力。

代码示例

#include <winrt/Windows.Foundation.h>
using namespace winrt::Windows::Foundation;

// 示例URI:带查询参数的下载地址
Uri downloadUri(L"https://sample.com/assets/安装包%20v2.1.0.msi?sign=xyz789");

// 仅需一行代码提取带扩展名的文件名
winrt::hstring targetFileName = downloadUri.Name();
// 执行后 targetFileName 为 L"安装包 v2.1.0.msi"

注意事项

  • 如果 URI 路径以斜杠结尾(例如 https://sample.com/folder/),Name() 会返回空字符串,这种场景建议补充兜底逻辑,要么取路径上一级分段作为文件名,要么指定默认文件名。
  • 所有标准 URI 编码的特殊字符(比如空格对应%20、中文对应编码串)都会被自动解码,不需要额外调用编码转换方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:54:04