C++ 入门学习经验 12——字符串下:长度、下标和遍历先练熟

📅 2026/7/6 2:37:42
C++ 入门学习经验 12——字符串下:长度、下标和遍历先练熟
大家好啊这里是阳阳的博客一个正在努力学习技术的大学生。上一篇我们聊了字符和字符串的区别重点说清楚了单引号和双引号该怎么用。今天这篇继续往下看string的几个基础操作比如求长度、访问某个字符、用循环遍历字符串。好了废话不多说咱们直接开始。字符串长度的获取先来看一个最简单的字符串string s hello;这个字符串长度是 5因为里面有h、e、l、l、o五个字符。在 C 里想知道一个string的长度可以用s.size()比如#include iostream using namespace std; int main() { string s hello; cout s.size(); return 0; }输出结果是5有些教材里也会写s.length()对于string来说size()和length()的效果基本一样。初学阶段不用纠结太多先记住一个常用写法就行。我个人更习惯写s.size()因为后面学其他容器时也经常会看到这个写法。这里需要注意长度表示字符串里有多少个字符但最后一个字符的下标不是长度本身。这个点和数组很像后面马上会说到。用下标访问字符串string很方便的一点是它可以像数组一样通过下标访问某个字符。比如string s hello; cout s[0] endl; cout s[1] endl; cout s[4] endl;输出h e o可以把字符串画成这样下标 0 1 2 3 4 字符 h e l l o所以s[0]是第一个字符s[1]是第二个字符s[4]是最后一个字符。这里很多同学刚开始容易写错。比如字符串hello的长度是 5有些同学会下意识觉得最后一个字符是s[5]。但合法下标只有 0 到 4s[5]已经越界了。可以先记住这个规则字符串长度是 n合法下标是 0 到 n - 1这个规则和数组完全一样。用循环遍历字符串既然字符串可以用下标访问那它自然也可以配合循环使用。比如把字符串里的每个字符都输出出来#include iostream using namespace std; int main() { string s hello; for(int i 0; i s.size(); i) { cout s[i] endl; } return 0; }这段代码的执行过程其实很简单。i从 0 开始每次加 1依次访问s[0]、s[1]、s[2]一直到最后一个字符。也就是说循环变量i在这里就是字符串的下标。这个写法非常常见for(int i 0; i s.size(); i) { // 处理 s[i] }刚开始写字符串题时很多地方都会用到这个模板。比如统计某个字符出现了多少次、判断有没有数字、把小写字母改成大写字母基本都要先遍历字符串。这里也顺便提醒一下循环条件一般写i s.size()不要写成i s.size()因为当i s.size()时就已经访问到字符串外面了。修改字符串中的某个字符字符串里的某个字符也可以直接修改。比如string s hello; s[0] H; cout s;输出Hello这里的s[0]表示第一个字符原来是小写的h现在被改成了大写的H。再看一个例子string s abc; s[1] x; cout s;输出axc这和数组修改元素的感觉很像。数组里可以写a[1] 100;字符串里也可以写s[1] x;只不过数组里通常改的是数字字符串里改的是字符。这里要注意单个字符要用单引号s[0] A;不要写成s[0] A;因为s[0]是一个字符位置应该放一个char而A是字符串。一个小例子统计字母 a 的数量我们用一个小例子把前面的内容串起来。题目输入一个字符串统计里面字符a出现了多少次。比如输入banana输出3代码如下#include iostream using namespace std; int main() { string s; cin s; int cnt 0; for(int i 0; i s.size(); i) { if(s[i] a) { cnt; } } cout cnt; return 0; }这道题的思路很清楚先输入一个字符串然后从头到尾遍历。每次拿到当前字符s[i]判断它是不是a。如果是就让cnt加 1。这类题特别适合练字符串遍历。大家可以把它和数组里的“统计某个数字出现次数”放在一起对比会发现思路几乎一样。数组里是if(a[i] x)字符串里是if(s[i] a)一个处理数字一个处理字符。写字符串题时先抓住主线对于刚开始学 C 的同学来说写题时可以先想清楚三件事字符串长度怎么获取。当前字符怎么访问。循环里要对当前字符做什么。比如统计字符出现次数循环里做判断和计数。比如修改某个字符循环里做判断和赋值。比如反向输出循环方向从后往前走。不要一开始就急着背很多字符串函数。先把s.size()、s[i]、循环遍历这几个基础操作练熟后面学其他函数会轻松很多。总结今天这篇我们主要聊了string的几个基础操作用s.size()获取字符串长度。用s[i]访问某个字符。字符串下标从 0 开始。可以用循环遍历字符串。可以通过下标修改字符串中的字符。字符串和数组有很多相似的地方。前面数组学得越稳这里理解起来就越轻松。不用因为下标写错、单双引号混了几次就怀疑自己。刚开始写字符串代码这些小问题很常见。多敲几遍多看一下每个字符的位置慢慢就会顺起来。那这篇就先到这里。如果觉得有帮助记得点赞、关注和收藏谢谢有什么问题欢迎在评论区留言我们一起交流。我们下篇见