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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:STL-deque容器
下一篇:STL-vector容器-互换容器和预留空间

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月13日 13时26分51秒