STL-string容器
发布日期:2021-11-20 10:17:56
浏览次数:14
分类:技术文章
本文共 2441 字,大约阅读时间需要 8 分钟。
本质:string是C++风格的字符串,而string本质是一个类
string和char区别: 1.char是一个指针
2.string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:
string类内部封装了很多成员方法,例如:查找find,拷贝copy,删除delete, 替换replace, 插入insert string管理char*所分配的内存,不用担心复制越界,和取值越界等,由类内部进行负责。1.string构造函数
构造函数原型: string(); // 创建一个空的字符串,例如:string str; string(const char* s); //使用字符串s初始化 string(const string& str) // 使用一个string对象初始化另一个string对象 string(int n, char c) //使用n个字符c初始化//string构造函数void test01() { string s1; //默认构造 const char* str = "hello world"; string s2(str); cout << "s2=" << s2 << endl; string s3(s2); cout << "s3=" << endl; string s4(10, 'a');}
2.给string字符串进行赋值
//赋值操作void test02() { //1. string str1; str1 = "aaa"; //2 string str2; str2 = str1; //3. string str3; str3 = 'q'; //4. string str4; str4.assign("aaaa"); //5. string str5; str5.assign("aaaaaaaa", 5);//把前5个输出 //6. string str6; str6.assign(str5); string str7; str7.assign(10, 'a');}
3.string字符串拼接
重载+=操作符
append函数
//string字符串拼接void test03() { //1. +=操作符 string str1="我"; str1 += "爱玩游戏"; //2. str1 += ':'; //3. string str2 = "LOL"; str1 += str2; //append方式 string str3 = "I"; str3.append("love"); str3.append("game", 3); str3.append(str2); str3.append(str2, 4, 3);//截取str2中的从第4个位置开始,截取三个,}
4.查找和替换
查找: find :查找第一次出现位置 rfind:查找最后一次位置 返回值为int类型 //rfind从右往左查找,find从左往右查找 替换:replace//查找和替换void test04() { string str1 = "abcdefg"; int pos = str1.find("de");//位置从零开始 if (pos = -1) { cout << "未找到字符串" << endl; } else { cout << "扎到字符串" << pos << endl; } //rfind从右往左查找,find从左往右查找 str1.rfind("de"); //替换 str1.replace(1, 3, "1111");//从位置1开始到位置3替换为1111 }
5.字符串比较
按照字符的ASCII码进行对比
=返回0返回1
<返回-1
函数:compare
//字符串比较void test05() { string str1 = "hello"; 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; }}
6.字符存取
1.通过[]方式取字符 2.通过at方式//字符串存取void test06() { string str1 = "hello"; //1.[] for (int i = 0; i < str1.size(); i++) { cout << str1[i]<< endl; }//2.at方式 for (int i = 0; i < str1.size(); i++) { cout << str1.at(i) << endl; } //修改单个字符 str1[0] = 'x';//1 str1.at(1) = 'x';//2}
7.插入和删除
insert插入字符串
erase删除字符串
//插入和删除、void test07() { string str = "hello"; //插入 str.insert(1, "111");//在1位置插3个1 //删除 str.erase(1, 3);//从第一个位置删除3个}
8.从字符串中获取想要的子串
函数:substr//求子串void test08() { string str = "abcdef"; string substr = str.substr(1.3);//从第一个位置返回3个}
转载地址:https://blog.csdn.net/weixin_43223362/article/details/103182785 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月13日 13时26分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python的Re库(正则表达式)基本用法
2019-04-26
Scrapy爬虫框架
2019-04-26
Anaconda
2019-04-26
NumPy库入门
2019-04-26
简单的留言板网页
2019-04-26
如何快速的搭建Apache+MySQL+PHP+PERL的环境
2019-04-26
初识JavaScript
2019-04-26
JavaScript的常用互动方法
2019-04-26
JavaScript的DOM操作
2019-04-26
JavaScript的事件响应与网页交互
2019-04-26
JavaScript实现的网页计算器功能
2019-04-26
英语四六级考试忘记准考证?怎么办?
2019-04-26
JavaScript内置对象
2019-04-26
JavaScript的游览器对象
2019-04-26
DOM对象,控制HTML对象
2019-04-26
制作一个表格,显示班级的学生信息
2019-04-26
JavaScript的选项卡操作
2019-04-26
Linux常用命令及文件处理命令
2019-04-26
Linux常见目录及作用
2019-04-26
文件链接命令
2019-04-26