- C++
字符串精讲
- 2024-7-4 17:30:51 @
字符串
什么是字符串?
1、char类型的数组
定义和初始化:
char ch0[100]; //全局变量是会初始化为'\0'(结束符),局部变量就是随机数据。
char ch1[100]={'0','1','2','3','4'};
char ch2[100]={"abc"};
char ch3[100]="opq";
输入:
char ch0[100];
// 第一种输入方法,
// 如果输入的值为:"123 456",那么只会把123存到ch0数组中,空格会结束cin的输入。
cin>>ch0;//ch0为字符数组名,同时也是一个指针,指向数组的第一个元素ch0[0];
// 第二种输入方法,
// 如果输入的值为:"123 456",那么只会把123存到ch0数组中,空格会结束scanf的输入。
scanf("%s",ch0);//ch0为字符数组名,同时也是一个指针,指向数组的第一个元素ch0[0];
// 第三种输入方法,
// 如果输入的值为:"123 456",那么只会把123存到ch0数组中,空格会结束scanf的输入。
getline(cin,ch0);//使用getline()函数来接受字符,即使遇到空格字符也能接受。
输出:
cout
printf()
puts()
2、标准库 <string>中的string
定义:
string str;//string是代表字符串数据类型
常用函数:
1(substr函数):字符串截取函数,用于获取字符串的子串:
//str.substr(begin,length),用于截取str中以begin为下标长度为length的字串
string s=“asd”;
s=s.substr(0,1);//结果为a。
2(find函数):查找字符串中是否存在该字符:
string s=“asd”;
int a=s.find(‘e’);//如果找到就返回1,否则返回负1
3.(insert):用于添加字符串。
string& insert(size_t pos,const string&str);
// 在位置 pos 处插入字符串 str
string& insert(size_t pos,const char * s);
// 在位置 pos 处插入字符串 s
string& insert(size_t pos,const char * s,size_t n);
// 在位置 pos 处插入字符串 s 的前 n 个字符
string& insert(size_t pos,size_t n,char c);
// 在位置 pos 处插入 n 个字符 c
4.(erase函数):用于作字符串删除操作
//str.erase(begin,length);//用于删除str的从begin下标开始长度为length的字符串。
string str=“abc”;
str.erase(1,1);//结果为ac
5.(replace函数):用来对字符串的字串作替换处理
//str.replace(begin,length,string s);用于把下标为begin,长度为length的字串替换为s。
string str=“abc”;
str=str.replace(1,2,“lk”);//str=“alk”。
//str.replace(s.begin(),s.begin()+3,“aaa”);给出两个起始位置和终点,把其中的字符串替换为"aaa"
// str.replace(1, 3, “123456”, 3, 5);用"123456"子串的下标[3,5]替换str的[1,3]的位置.
//str.replace(1, 3, 5, ‘a’); //用5个’a’代替str的[1,3]的位置.
6.(to_string()函数):用于把非string类的数据类型转化为string类
int a=134;
string s=a.to_string();//s=“134”;
7.(stoi()函数):把string类转化为int类型
string str=“123”;
int a=stoi(str);//a=123;
8.(reverse()函数):翻转字符串
string s=“lklk”;
reverse(str.begin(),str.end());//翻转整个字符串
reverse(str.begin(),str.begin()+n);//也可以翻转字符串的前n个字符;
stl(标准模版库)是什么?
c++的自带的一些常用的工具包。(为了让编程更简单简洁,把一些常用的功能已经做好了,不需要重复做轮子。)
序列式容器
向量(vector) 后端可高效增加元素的顺序表。
数组(array)C++11,定长的顺序表,C 风格数组的简单包装。
双端队列(deque) 双端都可高效增加元素的顺序表。
列表(list) 可以沿双向遍历的链表。
单向列表(forward_list) 只能沿一个方向遍历的链表。
关联式容器
集合(set) 用以有序地存储 互异 元素的容器。其实现是由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种比较元素大小的谓词进行排列。
多重集合(multiset) 用以有序地存储元素的容器。允许存在相等的元素。
映射(map) 由 {键,值} 对组成的集合,以某种比较键大小关系的谓词进行排列。
多重映射(multimap) 由 {键,值} 对组成的多重集合,亦即允许键有相等情况的映射。
0 条评论
目前还没有评论...