3
字符串及其函数
GESP 三级 · 知识点 6

🔤 字符串及其函数

字符串就是「一串字符」,像一句口号、一段歌词。C++ 帮我们准备了「字符串工具箱」:能变大小写、能搜索关键词、能切出小段、还能替换内容,像给句子做美容和剪裁。

考纲知识点:大小写转换、字符串搜索、分割、替换等
📖
考纲 · 知识点详述
摘自《CCF编程能力等级认证 C++&Python 认证标准》C++ 三级
  1. (6)掌握字符串及其函数的使用包括但不限于大小写转换、字符串搜索、分割、替换。
📚
先学一学
花 5 分钟读完下面 5 课,再去闯关就不慌啦
1
🔠 字符串:一串会发光的字符灯

字符是一个字母、数字或符号(用单引号 'a');字符串是一整串字符(用双引号 "hello"),像把字符灯串成一排。字符串也有编号,而且也是从 0 开始

📏 数长度 & 看单字
看得懂就好,不用背:
string s = \"hello\";
int n = s.length(); // n = 5
cout << s[0]; // 输出 h
s.length() 数出有几个字符(5),s[0] 是第一个字符 h
💡 口诀:字符串像字符灯串,编号从 0 数;length 数一共有几盏。
2
🔤 大小写转换:A 和 a 差多少

电脑里每个字母都有一个数字代号(ASCII 码):大写 A 是 65,小写 a 是 97。大写和小写正好差 32,所以想变大写就减 32、想变小写就加 32。不过更省心的办法是用现成函数:

🔧 函数工具箱
toupper(ch):把字符 ch 变大写
tolower(ch):把字符 ch 变小写
例:toupper('b') 得到 'B'
💡 口诀:A=65、a=97,大小写差 32;变大写用 toupper,变小写用 tolower。
🧪 把一整句话都变大写
函数一次只能处理一个字符,所以要把整句话变大写,就得用循环一个字符一个字符地转换——先取 s[i],再 toupper,再放回去。
💡 口诀:toupper/tolower 一次只变一个字符,整句变大写要靠循环。
3
🔎 搜索 find 和切取 substr
🔍 find:在句子里找关键词的位置
看得懂就好,不用背:
string s = \"abcdef\";
cout << s.find(\"cd\");
find("cd") 从最前面找,找到 c 在第 2 号位置(0 开始数),所以输出 2。如果找不到,它会返回一个特别大的数。
💡 口诀:find = 报位置;位置从 0 数,找不到给大数。
✂️ substr:从句子中间切一段
看得懂就好,不用背:
string s = \"abcdef\";
cout << s.substr(2, 3);
substr(2, 3) = 从 2 号位开始切,一共切 3 个字符 → "cde"
💡 口诀:substr(起点, 长度);第二个数是长度,不是终点!
4
🪄 替换 replace 和手工「分割」
🔁 replace:把一段换成新内容
看得懂就好,不用背:
string s = \"Hello World\";
s.replace(0, 5, \"Hi\");
cout << s;
replace(0, 5, "Hi"):从 0 号位开始,把 5 个字符("Hello")换成 "Hi",得到 "Hi World"
💡 口诀:replace(起点, 长度, 新词) = 先删旧段、再贴新词。
🍉 分割:把一句话切成词
C++ 没有一键分割的现成函数,但可以自己搭:用 find 找到空格的位置,再用 substr 把空格前的词切出来,接着往后找下一个空格——像沿着西瓜纹路一块块切。
💡 口诀:分割 = find 找空格 + substr 切词,循环切到底。
5
🆚 易混对比和读代码小技巧
📊 字符串函数总表
· length():有几个字符。
· toupper / tolower:单字符大小写转换。
· find(词):词第一次出现的位置,找不到返回大数。
· substr(起点, 长度):切一段(长度不是终点!)。
· replace(起点, 长度, 新词):替换一段。
💡 口诀:length 数、toupper 变大、find 报位、substr 切、replace 换。
⚠️ 三个爱考的小坑
s.substr(2,3) 是「从 2 号位切 3 个」,得到 cde,不是「切到 3 号位」。
② find 报的位置从 0 开始"abcdef".find("cd") = 2。
③ 单字符 char 用单引号、字符串 string 用双引号:'A'"A" 不是一回事。
💡 口诀:substr 看长度、find 从 0 报、单双引号别混用。
🎯
闯关小锦囊 · 考点提醒
🎮
学完了?来闯关!
下面 15 个小挑战,点一点就能玩

Demo 原型 · 每个知识点独立页面 · 暂不含真实编译与进度存储。