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

C++使用substr截取年份字符串最后两位的实现问题

问题原因

你当前代码使用substr的参数逻辑错误:
C++中std::string的substr方法第一个参数代表截取的起始索引位置,第二个参数代表截取的长度(可选,缺省时默认截取到字符串末尾)。
你写的substr(0,2)是从字符串开头(索引0)开始截取2个字符,输入2016时会得到前两位20,和预期结果相反。

修正方案

要提取最后两位,只需要把起始位置设为字符串总长度减2即可,修改后代码如下:

if (year.length() > 2) {
    year = year.substr(year.length() - 2);
}

效果验证

以输入2016为例:
字符串总长度为4,4-2=2,substr(2)会从索引2的位置(对应字符1)开始截取到末尾,最终得到16,完全符合预期。
如果输入的年份字符串长度小于等于2(比如输入98),会保留原字符串不做修改,逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:02