C++ STL常用容器1——string容器
写在前面⭐如果本篇博文对你有帮助那就关注 点赞 收藏一下吧目录1.string基本概念2.string构造函数3.string容器4.string字符串拼接5.string查找和替换6.string字符串比较7.string字符存取8.string插入和删除9.string子串1.string基本概念本质●string是C风格的字符串而string本质上是一个类string和char *区别●char*是一个指针●string是一个类类内部封装了char*管理这个字符串是一个char*型的容器。特点string类内部封装了很多成员方法例如查找find拷贝copy制除delete替换replace插入insertstring管理char*所分配的内存不用担心复制越界和取值越界等由类内部进行负责2.string构造函数构造函数原型示例#include iostream using namespace std; //string构造函数 void test01() { string s1; //默认构造 const char *str hello world; string s2(str); //把c_string转换成了string cout s2 s2 endl; //s2 hello world string s3(s2); cout s3 s3 endl; //s3 hello world string s4(10,a); //使用拷贝构造函数 cout s4 s4 endl; //s4 aaaaaaaaaa } int main() { test01(); return 0; }总结string的多种构造方式没有可比性灵活使用即可3.string容器功能描述给string字符串进行赋值示例#include iostream using namespace std; //string赋值操作 void test01() { string str1; str1 hello world; cout str1 str1 endl; string str2; str2 str1; cout str2 str2 endl; string str3; str3 a; cout str3 str3 endl; string str4; str4.assign(hello C); cout str4 str4 endl; string str5; str5.assign(hello C,5); cout str5 str5 endl; string str6; str6.assign(str5); cout str6 str6 endl; string str7; str7.assign(10,w); cout str7 str7 endl; } int main() { test01(); return 0; }总结string的赋值方式很多operator这种方式是比较实用的4.string字符串拼接功能描述●实现在字符串末尾拼接字符串示例#include iostream using namespace std; //string字符串拼接 void test01() { string str1 我; str1 爱玩游戏; cout str1 str1 endl; str1 ; cout str1 str1 endl; string str2 LOL DNF; str1 str2; cout str1 str1 endl; string str3 I; str3.append( Love); cout str3 str3 endl; str3.append( Play Game,5); cout str3 str3 endl; //str3 I Love Play // str3.append(str2); // cout str3 str3 endl; // str3.append(str2,0,3); //只截取到LOL // cout str3 str3 endl; //str3 I Love PlayLOL str3.append(str2,4,3); //只截取了DNF cout str3 str3 endl; //str3 I Love PlayDNF } int main() { test01(); return 0; }总结字符串拼接的重载版本很多初学阶段记住几种即可5.string查找和替换功能描述●查找查找指定字符串是否存在●替换在指定的位置替换字符串示例#include iostream using namespace std; //string查找和替换 //1.查找 void test01() { // find 从左开始查找 string str1 abcdefgde; int pos str1.find(de); if(pos -1) { cout 未找到 endl; } else { cout pos pos endl; //pos 3 } //rfind 从右开始查找 pos str1.rfind(de); cout pos pos endl; //pos 7 } //2.替换 void test02() { string str1 abcdefgde; //从1号位置起3个字符替换为“1111” str1.replace(1,3,1111); cout str1 str1 endl; //str1 a1111efgde } int main() { //test01(); test02(); return 0; }总结●find查找是从左往后rfind从右往左●find找到字符串后返回查找的第一个字符位置找不到返回-1●replace在替换时要指定从哪个位置起多少个字符替换成什么样的字符串6.string字符串比较功能描述●字符串之间的比较比较方式●字符串比较是按字符的ASCII码进行对比返回 0返回 1返回 -1函数原型●int compare(const string s) const; //与字符串s比较●int compare(const char *s) const; //与字符串s比较示例#include iostream using namespace std; //string字符串比较 void test01() { string str1 xello; string str2 hello; if(str1.compare(str2) 0) { cout str1 str2 endl; }else if(str1.compare(str2) 0) { cout str1 str2 endl; } else { cout str1 str2 endl; } //str1 str2 } int main() { test01(); return 0; }总结字符串对比主要是用于比较两个字符串是否相等判断谁大谁小的意义并不是很大7.string字符存取string中单个字符存取方式有两种char operator[](int n); //通过O方式取字符char at(int n); //通过at方法获取字符示例#include iostream using namespace std; //string字符存取 void test01() { string str1 hello; //1.通过[]访问单个字符 for (int i 0; i str1.size(); i) { cout str1[i] ; } cout endl; //2.通过at()访问单个字符 for (int i 0; i str1.size(); i) { cout str1.at(i) ; } cout endl; //修改单个字符 str1[0] x; cout str1 str1 endl; //str1 xello str1.at(1) y; cout str1 str1 endl; //str1 xyllo } int main() { test01(); return 0; }总结string字符串中单个字符存取有两种方式利用[ ]或at8.string插入和删除功能描述●对string字符串进行插入和删除字符操作示例#include iostream using namespace std; //string插入和删除 void test01() { string str1 hello; //插入 str1.insert(1,111); cout str1 str1 endl; //str1 h111ello //删除 str1.erase(1,3); //从1号位置开始3个字符 cout str1 str1 endl; //str1 hello } int main() { test01(); return 0; }总结插入和删除的起始下标都是从0开始9.string子串功能描述从字符串中获取想要的子串函数原型string substr (int pos 0int n npos) const; //返回由pos开始的n个字符组成的字符串示例#include iostream using namespace std; //string求子串 void test01() { string str abcdefg; string subStr str.substr(1,3); cout subStr subStr endl; //subStr bcd } //实用操作 void test02() { string email hellogmail.com; //从邮件地址中获取用户名信息 string username email.substr(0,email.find()); cout 用户名 username endl; //用户名hello } int main() { test01(); test02(); return 0; }总结灵活的运用求子串功能可以在实际开发中获取有效的信息写到后面⭐如果本篇博文对你有帮助那就关注 点赞 收藏一下吧
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2519229.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!