GESP三级语法知识(六、string 入门与基础操作)
第一课《string 入门与基础操作》 第一章string 是什么升级版小火车1、 故事以前我们用的是 char数组 小火车 要自己管理现在来了一个超级智能火车 它叫string2、 对比一下类型特点char数组麻烦 string自动管理 3、 举例#includeiostream #includestring using namespace std; int main() { string s Hello; cout s; } 不用管\0 不用担心越界 第二章string 的定义方式 方法1最常用string s Hello; 方法2string s(Hello); 方法3空字符串string s; 方法4重复字符string s(5, A); 结果AAAAA 第三章输入输出比 char 简单太多1、 输入string s; cin s; 读到空格停止2、 读整行重点getline(cin, s);3、 示例string s; getline(cin, s); cout s; 第四章访问字符像数组一样1、 示例string s Hello; cout s[0]; // H cout s[1]; // e2、 修改字符s[0] Y; 结果Yello 第五章字符串长度1、 方法s.length() s.size() 两个一样2、 示例string s Hello; cout s.length(); // 5 第六章字符串拼接超级简单 方法1string a Hello; string b World; string c a b; HelloWorld 方法2a b; 第七章字符串比较1、 可以直接用if(a b) if(a b) if(a b) 自动按字典序比较2、 示例string a apple; string b banana; if(a b) { cout apple banana; } 第八章遍历 string重要 方法1下标for(int i 0; i s.length(); i) { cout s[i]; } 方法2范围 for高级一点for(char c : s) { cout c; } 第九章常用函数基础版 1append拼接s.append(abc); 2push_back加一个字符s.push_back(A); 3pop_back删最后一个s.pop_back(); 4empty是否为空if(s.empty()) 5clear清空s.clear(); 第十章小练习巩固 练习1统计长度输入hello输出5参考代码#includeiostream #includestring using namespace std; int main() { string s; cin s; // 输入字符串遇到空格结束 cout s.length() endl; // 输出长度 return 0; } 练习2转大写 遍历 修改参考代码#includeiostream #includestring using namespace std; int main() { string s; cin s; for(int i 0; i s.length(); i) { if(s[i] a s[i] z) { s[i] s[i] - 32; // 转大写 } } cout s endl; return 0; } 练习3拼接两个字符串参考代码#includeiostream #includestring using namespace std; int main() { string a, b; cin a b; string c a b; // 拼接 cout c endl; return 0; } 本节总结必须掌握✅ string 不需要\0✅ 支持拼接✅ 支持 比较✅.length()获取长度✅ 可以像数组访问接下来继续学习 第二课《string 高级操作 字符串互转核心》 第一章substr截取子串1、 故事小机器人拿到一段话HelloWorld它只想要World 怎么切出来用substr ✂️2、 用法s.substr(起始位置, 长度)3、 示例string s HelloWorld; cout s.substr(5, 5); 输出World4、 特殊写法常用s.substr(5) 表示从5到结尾5、⚠️ 易错点❌ 下标从0开始❌ 长度不能越界 第二章find查找1、 故事机器人要找 “World 在哪里”2 用法s.find(子串)3、 示例string s HelloWorld; cout s.find(World); 输出54、 找不到怎么办 返回string::npos5、 判断写法重要if(s.find(abc) ! string::npos) { cout 找到了; }✂️ 第三章erase删除1、 故事字符串里混入了坏字符要删除2、 用法s.erase(起始位置, 删除长度)3、 示例string s HelloWorld; s.erase(5, 5); cout s; 输出Hello4、 删除一个字符s.erase(2, 1); 第四章insert插入1、 故事机器人要在中间插入东西2、 用法s.insert(位置, 内容)3、 示例string s Hello; s.insert(5, World); cout s; 输出HelloWorld 第五章replace替换1、 故事把错误单词换掉2、 用法s.replace(起始位置, 长度, 新内容)3、 示例string s HelloWorld; s.replace(5, 5, C); cout s; 输出HelloC 第六章组合技竞赛重点1、 例删除所有 abstring s abcabdab; while(s.find(ab) ! string::npos) { int pos s.find(ab); s.erase(pos, 2); } cout s; 输出cd 第七章string 与 char数组互转 1string → char数组方法1常用string s Hello; char a[100]; strcpy(a, s.c_str()); 解释s.c_str() 把 string 变成C风格字符串char* 2char数组 → string方法1最简单char a[] Hello; string s a;方法2string s(a);⚠️ 易错点总结❌ 1find 返回值判断错误if(s.find(abc)) ❌✔ 正确if(s.find(abc) ! string::npos)❌ 2erase 越界s.erase(100, 2); ❌❌ 3忘记 include#include string #include cstring 第八章综合闯关题实战 题1提取文件名输入 /home/user/test.txt 输出 test.txt 思路 找最后一个/ 代码#includeiostream #includestring using namespace std; int main() { string s; cin s; int pos s.find_last_of(/); cout s.substr(pos 1); } 题2替换所有空格为 _ 代码string s; getline(cin, s); for(int i 0; i s.size(); i) { if(s[i] ) s[i] _; } cout s; 题3删除所有数字 代码string s; cin s; string t ; for(char c : s) { if(!(c 0 c 9)) t c; } cout t; 题4统计子串出现次数 代码string s ababab; string t ab; int cnt 0; int pos 0; while((pos s.find(t, pos)) ! string::npos) { cnt; pos; // 可以改为 pos t.size(); } cout cnt; 最终总结 核心函数函数作用substr截取find查找erase删除insert插入replace替换 必会技能✅ 子串处理✅ 查找 删除组合✅ 字符串修改✅ string 与 char数组互转
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467091.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!