c++学习第十三讲---STL常用容器---string容器

news/2024/7/23 21:30:00 标签: c++, 学习, 开发语言

string容器:

一、string的本质:

string和char*的区别:

char*是一个指针
string是一个类,封装了char*,管理这个字符串,是char*的容器。

二、string构造函数:

string() ;                            //空字符串
string(const char* s) ;       //用字符串s初始化
string(const string& str) ;  //拷贝构造
string(int n, char c) ;         //用n个字符c初始化

	string str1;
	char s[12] = "hello world";
	string str2(s);
	string str3(str2);
	string(10, 'a');

三、string赋值操作:

(1)通过 = 重载赋值:

string& operator=(const char* s);     //用字符串s赋值

string& operator=(const string& s);  //用字符串s赋值

string& operator=(char c);                //用字符c赋值

	char s[12] = "hello world";
	string str1 = s;
	string str2 = str1;
	string str3;
	str3 = 'a';

(2)通过 assign 函数赋值:

string& assign(const char* s);          //用字符串s赋值

string& assign(const char* s, int n); //用字符串s前n个字符赋值

string& assign(const string& s);       //用字符串s赋值

string& assign(int n, char c);            //用n个字符c赋值

	string str1;
	str1.assign("hello world");
	str1.assign("hello world",5);
	string str2;
	str2.assign(str1);
	str2.assign(10, 'a');

四、string的拼接:

(1)通过 += 重载拼接:

string& operator+= (const char* str) ;

string& operator+= (const char c) ;

string& operator+= (const string& str) ;

	string str1 = "hello ";
	str1 += "world";
	str1 += '!';
	string str2 = "haha ";
	str1 += str2;

(2)通过 append 函数拼接:

string& append(const char* s) ;

string& append(const char* s, int n) ;               //把字符串s的前n个字符连接到当前字符串结尾

string& append(const string& s) ;

string& append(const string& s, int pos, int n) ;//字符串s从pos开始的n个字符连接到字符串结尾
(注:字符串下标从0开始)

	string str1 = "hello";
	str1.append(" ");
	str1.append("world", 1);
	string str2 = "or";
	str1.append(str2);
	str1.append("world", 3, 2);
	cout << str1 << endl;

五、string的查找和替换:

(1)查找:find 和 rfind 函数

注:(1)查找函数返回值:找到返回位置,没找到返回 -1。

       (2)rfind从右往左查找,find从左往右查找

(2)替换:replace 函数

	string str1 = "abcdefg";
	int pos = str1.find("de");//3
	str1.replace(1, 2, "aa");

六、string的比较:compare 函数

比较方式:逐个按ASCII码值进行对比。

=:返回 0

>:返回 1

<:返回 -1

int compare(const string& s) const;

	cout << str[0] << endl;

int compare(const char* s) const;

	string str1 = "abc";
	string str2 = "abd";
	cout << str1.compare(str2) << endl;
	cout << str1.compare("abd") << endl;

七、string的取用:

(1)通过 [ ] 重载取用

	cout << str[0] << endl;

(2)通过 at 函数取用

char& at (int n);

	cout << str.at(0) << endl;

八、字符串插入和删除:

string& insert (int pos, const char* s);        //在指定位置插入字符串s

string& insert (int pos, const string& str);   //在指定位置插入字符串s

string& insert (int pos, int n, char c);          //在指定位置插入n个字符c

string& erase (int pos, int n = npos);          //删除从pos开始的n个字符

	string str1 = "world";
	str1.insert(1, "111");
	str1.erase(1, 3);

九、string子串:

功能:从字符串中获取想要的子串。

string substr (int pos = 0, int n = npos) const; //返回由pos开始的n个字符组成的字符串

	string str = "abcdef";
	cout << str.substr(1, 3) << endl;


http://www.niftyadmin.cn/n/5349638.html

相关文章

[UI5 常用控件] 03.Icon, Avatar,Image

文章目录 前言1. Icon2. Avatar2.1 displayShape2.2 initials2.3 backgroundColor2.4 Size2.5 fallbackIcon2.6 badgeIcon2.7 badgeValueState2.8 active 3. Image 前言 本章节记录常用控件Title,Link,Label。 其路径分别是&#xff1a; sap.m.Iconsap.m.Avatarsap.m.Image 1…

ssh异常报错:Did not receive identification string from

一、问题描述 某次外出在异地工作场所xshell炼乳远程服务器时&#xff0c;报错&#xff1a;Connection closed by foreign host. D&#xff0c;服务器查看secure日志或sshd服务状态会显示&#xff1a;id not receive identification string from client_ip; 二、分析处理 1&a…

C++——IOStream

什么是IO&#xff1f; C语言和C&#xff0c;我们其实已经接触到了两个IO的概念 #include<stdio.h> #include<iostream> iostream&#xff0c;便是IO流&#xff0c;其中I表示in&#xff0c;O表示out&#xff0c;代表着用户的输入和终端的输出。在之前的C语法中&a…

HCIA学习作业三

要求&#xff1a; 拓扑图&#xff1a; <AR1>ping 5.5.5.1 <AR1>display ip interface brief <AR1>display ip routing-table <AR1>display ip routing-table protocol static <AR2>ping 5.5.5.1 <AR2>display ip interface brief <…

【Maven教程】(十五):编写 Maven 插件—— 编写 Maven 插件的一般步骤及案例、Mojo 标注与参数、错误处理和日志 ~

Maven 编写 Maven 插件 1️⃣ 编写 Maven 插件的一般步骤2️⃣ 案例&#xff1a;编写一个用于代码行统计的 Maven 插件3️⃣ Mojo 标注4️⃣ Mojo 参数5️⃣ 错误处理和日志6️⃣ 测试 Maven 插件&#x1f33e; 总结 前面文章已经讲过&#xff0c;Maven 的任何行为都是由插件完…

Java读取制表符文本转换为JSON

随着信息技术的迅猛发展&#xff0c;数据处理已经成为各个行业中不可或缺的一部分。而在数据处理的过程中&#xff0c;往往需要将数据从一种格式转换为另一种格式&#xff0c;以便于更好地进行分析和应用。在Java开发中&#xff0c;读取制表符文本并将其转换为JSON格式是一项常…

[docker] 关于docker的面试题

docker命名空间&#xff1f; docker与虚拟机的区别&#xff1f; 容器虚拟机所有容器共享宿主机的内核每个虚拟机都有独立的操作系统和内核通过namespace实现资源隔离&#xff0c;通过cgroup实现限制资源的最大使用量完全隔离。每个虚拟机都有独立的硬件资源秒级启动速度分钟级…

Python 列表的相关操作总结

1、创建列表&#xff1a; # 创建列表的方式一&#xff1a;字面量语法 list1 [red, green, blue] print(list1) # 输出[red, green, blue] # 创建列表的方式二&#xff1a;构造器语法 list2 list(range(1, 10)) print(list2) # 输出[1, 2, 3, 4, 5, 6, 7, 8, 9] # 创建列表…