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

咨询C++中两个string.find()方法间减号的含义

关于C++字符串substr参数中减号的含义解答

这段代码里的减号就是普通的减法运算,并非表示区间范围。

要理解它的作用,得先明确C++中string::substr的参数规则:substr(起始位置, 截取长度),第二个参数需要传入要截取的字符数量,而非结束位置。

拆解代码中的逻辑:

  • line.find(" ") + 1:先找到空格在字符串中的索引位置,加1是为了跳过空格,作为截取分钟数的起始位置。
  • line.find("h") - line.find(" ") - 1:通过减法计算空格到字符"h"之间的字符长度:
    1. line.find("h") - line.find(" ")得到的是从空格到"h"的总字符数(包含空格本身)
    2. 再减1是为了排除"h"本身,最终得到的就是空格和"h"之间需要截取的分钟数字符长度。

举个实际例子:假设line的内容是" 30h",那么:

  • line.find(" ")返回0,起始位置为0+1=1
  • line.find("h")返回3,3-0-1=2,调用substr(1,2)就会截取到"30",也就是我们需要的分钟数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:17:34