执行以下 C++ 代码后,sub 的值是()。
string str = "GESP2026";
string sub = str.substr(4, 2);答案A。C++中字符串处理可以用字符数组或string类型。sizeof和strlen的结果不同。
仔细审题,注意限定词和否定词。用排除法缩小选项范围。
【考点】字符串操作|substr函数语法|索引边界
GESP 三级 C++ 模块 2“字符串处理”必考题型。命题人故意把"2026"塞进前缀,让你数错起始位置——这题卡住的是"0-based 索引”和“子串长度”两个基础概念,以及字符串中数字字符的视觉干扰。
看到 substr(4, 2),先定位:从下标 4 开始,取 2 个字符。str 是 "GESP2026",下标 0-3 是 GESP,下标 4 是'2',下标 5 是'0',因此截取结果就是"20"。
陷阱全在“看走眼”:选项 B 把'0'当起始,D 把'0'当结尾,都是数错下标;选项 C 以为“从 4 起取到末尾”,忘了第二个参数是长度。最阴险的是"2"在字符串中间,视觉容易误判为开头,一旦把起始点往右挪一格,自然掉进 B 选项。
命题人想考的就是你“敢不敢逐字核对下标”。改题的话,把 substr(4, 2) 换成 substr(3, 2) 就会变成"P2",换字符串为"GESP20260"则原答案变"200"。记住:刷到此类题,先问自己“下标是不是从 0 开始?长度是不是真的只取两个?”