咨询C++中两个string.find()方法间减号的含义
关于C++字符串substr参数中减号的含义解答
这段代码里的减号就是普通的减法运算,并非表示区间范围。
要理解它的作用,得先明确C++中string::substr的参数规则:substr(起始位置, 截取长度),第二个参数需要传入要截取的字符数量,而非结束位置。
拆解代码中的逻辑:
line.find(" ") + 1:先找到空格在字符串中的索引位置,加1是为了跳过空格,作为截取分钟数的起始位置。line.find("h") - line.find(" ") - 1:通过减法计算空格到字符"h"之间的字符长度:line.find("h") - line.find(" ")得到的是从空格到"h"的总字符数(包含空格本身)- 再减1是为了排除"h"本身,最终得到的就是空格和"h"之间需要截取的分钟数字符长度。
举个实际例子:假设line的内容是" 30h",那么:
line.find(" ")返回0,起始位置为0+1=1line.find("h")返回3,3-0-1=2,调用substr(1,2)就会截取到"30",也就是我们需要的分钟数。
内容的提问来源于stack exchange,提问作者isxxc
相关产品推荐
相关产品推荐

