新闻中心

C++如何截取字符串子串_C++ string substr函数的参数图解

2025-11-28
浏览次数:
返回列表
substr函数用于提取子串,语法为string substr(size_t pos = 0, size_t len = npos);pos为起始索引,len为长度;若pos越界则抛出异常,否则自动截取到末尾;常用于提取扩展名或去除前缀。

c++如何截取字符串子串_c++ string substr函数的参数图解

在C++中,substrstd::string 类提供的一个成员函数,用于从原字符串中提取指定位置和长度的子串。它使用简单,但参数含义需要清楚理解,避免越界或截取错误。

substr 函数的基本语法

函数原型如下:

string substr(size_t pos = 0, size_t len = npos) const;

该函数返回一个新字符串,是原字符串从位置 pos 开始、长度为 len 的子串。

参数详解与图解说明

pos:起始位置(索引),从 0 开始计数。
len:希望截取的字符个数,可省略,若省略则表示从 pos 一直取到末尾。

假设有一个字符串:

std::string str = "Hello, World!";

其字符索引如下图所示:

N世界 N世界

一分钟搭建会展元宇宙

N世界 138 查看详情 N世界
 H  e  l  l  o  ,     W  o  r  l  d  !
 0  1  2  3  4  5  6  7  8  9 10 11 12

现在我们通过几个例子来理解参数作用:

  • str.substr(0, 5) → 从索引 0 开始取 5 个字符 → "Hello"
  • str.substr(7, 5) → 从索引 7 开始取 5 个字符 → "World"
  • str.substr(7) → 从索引 7 到末尾 → "World!"
  • str.substr(5, 3) → 从索引 5 取 3 个字符 → ", W"

边界情况与注意事项

使用 substr 时需注意以下几点:

  • 如果 pos 超过了字符串长度(即 pos >= str.length()),会抛出 std::out_of_range 异常。
  • 如果 pos + len 超出字符串末尾,substr 会自动截取到末尾为止,不会报错。
  • 如果 len 为 0,返回空字符串。
  • 默认参数:pos 默认为 0,len 默认为 npos(表示“直到结尾”)。

例如:

str.substr(13); // pos=13 超出范围(长度为13,最大索引12)→ 抛异常 str.substr(10, 100); // 只能取到末尾,结果是 "d!"

实用小技巧

常用于分割字符串或提取关键信息:

  • 提取文件扩展名:
  • std::string filename = "example.txt"; std::string ext = filename.substr(filename.rfind('.')); // 得到 ".txt"
  • 去掉前缀:
  • std::string url = "https://example.com"; std::string domain = url.substr(8); // 去掉 "https://"

基本上就这些。掌握好起始位置和长度两个参数,就能灵活使用 substr 截取任意子串。注意检查 pos 是否合法,避免运行时异常。

以上就是C++如何截取字符串子串_C++ string substr函数的参数图解的详细内容,更多请关注其它相关文章!


# 几个  # 呈贡营销推广品牌策划  # 佛山seo软件首选乐云seo  # 黄浦抖音营销推广方式  # 美团营销推广目的  # seo指令详解  # 成都视频推广获客网站  # 淄博全网seo报价表  # 什么项目适合网站推广呢  # 鞍山seo软件加盟公司  # 镇江91营销推广价格  # 就能  # c++  # 迭代  # 长度为  # 默认为  # 抛出  # 解决方法  # 尼克  # 重写  # 有什么  # ai  # 字符串截取 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  微信网页版登录教程_微信网页版登录入口在哪  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解  一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰  在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  深入理解J*a编译器的兼容性选项:从-source到--release  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  菜鸟取件码是什么怎么查 最全查询渠道汇总  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  Golang如何优雅处理error_Golang error处理最佳实践总结  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  漫蛙2网页版漫画入口 漫蛙漫画在线官方登录  汽水音乐在线版入口_汽水音乐网页播放手册  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式  必由学官网快捷入口 必由学网页版在线学习平台  不同用户不同价格! 索尼开启账户个性化定价测试  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  快手赚钱渠道_快手收益来源  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  邮政快递包裹最新位置 邮政快递实时追踪入口  美团外卖商家服务中心入口 美团商家版官网入口  PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符  Python字典中优雅地迭代剩余元素的方法  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】  海棠账号登录入口_登录海棠账户同步阅读记录  钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法  韩剧圈正版入口页面_韩剧圈官网登录链接  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  Steam官网入口直达 Steam注册及登录步骤  大象笔记网页版入口 印象笔记网页版登录入口  提升Kafka消费者健壮性:会话超时处理与消息处理语义  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  QQ邮箱登录官网首页 腾讯QQ邮箱网页入口  Django通过AJAX异步上传图片并保存至模型的完整指南  Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略  PHP 枚举:根据字符串获取枚举案例的策略与实现  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  Centos/Linux 系统下安装 composer 的完整步骤  12306几点到几点不能订票? | 官方最新系统维护时间全解析  拼多多赚钱渠道_拼多多收益来源 

搜索