STL容器—— 1.string 字符串

一、头文件

string 需要 <string> 头文件

二、操作

1.声明

string 类型变量用以下格式声明

string s="Hello World!";

这个程序声明了一个 string 类型变量 s,并将其赋值为 Hello World!

2. length()size()

length()size() 函数用来求字符串的长度
e.g.:

string s="Hello World!";
int len=s.length();//或s.size()

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后声明了一个 int 类型变量 len,并将其赋值为 s 的长度

3. +=

+= 用于连接两个字符串
e.g.:

string s1="Hello ";
string s2="World!";
s1+=s2;

这个程序首先声明了一个 string 类型变量 s1,并将其赋值为 Hello (空格打不出来)
然后声明了一个 string 类型变量 s2,并将其赋值为 World!
最后将 s2 连接到了 s1 的后面

4.访问

字符串的索引从 0 开始,到 s.length()-1 结束
因此可以这样遍历:

string s ="Hello World!";
int len =s.length();
for(int i = 0;i < len;i++){
	cout<<s[i]<<" ";
}

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后声明了一个 int 类型变量 len,并将其赋值为 s 的长度
最后遍历了 s 的每一个字符,并以空格分隔将其输出

5. find()

find() 函数用来查找子串,会返回第一次出现的子串的第一个字符的索引,如果找不到,则会返回 string::npos
其中有一个参数:
find(str)
str 表示要寻找的子串
e.g.:

string s="Hello World!";
if(s.find("ell")!=string::npos){
	cout<<s.find("ell");
}
else{
	cout<<"No";
}

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后判断 s 中有没有子串 ell,如果有,输出第一次出现的位置,否则输出 No

6. empty()

empty() 函数用来求一个字符串是否为空
如果空,返回 1
否则返回 0
e.g.:

string s="Hello World!";
if(!s.empty()){
	cout<<s.length();
}
else{
	cout<<"Empty";
}

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后判断 s 是否为空,如果不为空,输出 s 的长度,否则输出 Empty

7. begin()end()

begin() 函数会返回字符串的第一个字符的地址
end()函数则会返回字符串最后一个字符的地址
但是如果是空串,则会因为没有地址导致RE
e.g.:

// 反转字符串
string s="Hello World!";
if(!s.empty()){
	reverse(s.begin(),s.end());
}

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后在 s 不是空串的情况下,反转了 s

8. front()back()

front() 函数会返回字符串的第一个字符的值
back() 函数会返回字符串最后一个字符的值
但是如果是空串,则会因为没有值导致RE
e.g.:

string s="Hello World!";
if(!s.empty()){
	cout<<s.front()<<" "<<s.back();
}

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后在 s 不是空串的情况下,输出了 s 的第一个字符和最后一个字符

9. erase()

erase() 函数用来清除字符串内的特定区间的内容
其中有两个参数:
erase(pos,len)
pos 表示要删除掉的起始下标,len 表示删除长度
e.g.:

string s="Hello World!";
s.erase(5,7);

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后删除了 s 中从下标 5 开始的 7 个字符,也就是 World!(空格打不出来)

10. replace()

replace() 函数用来替换字符串中指定范围内的字符
其中有三个参数:
replace(pos,len,str)
pos 表示要替换掉的起始下标,len 表示替换长度,str 要替换的字符串
e.g.:

string s="Hello World!";
s.replace(6,5,"C++");

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后截取了 s 中从下标 6 开始的 5 个字符,也就是 World,并将其替换为为 C++

11. substr()

substr 函数用来获取一个字符串特定范围内的子串
其中有两个参数:
substr(pos,len)
pos 表示要获取的子串的起始下标,len表示获取长度
e.g.:

string s1="Hello World!";
string s2=s.substr(0,5);

这个程序首先声明了一个 string 类型变量 s1,并将其赋值为 Hello World!
然后声明了一个 string 类型变量 s2,并将其赋值为 s1 中从下标 0 开始的 5 个字符,也就是 Hello

12. at()

at() 函数用来获取字符串中指定字符,并可以进行赋值操作
其中有一个参数:
at(pos)
pos 表示要获取的字符的下标
e.g.:

string s="Hello World!";
s.at(6)='w';

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!
然后将 s 中的第 6 个字符,也就是 W,修改为 w

13. push_back()

push_back() 函数用来在字符串末尾加入字符
其中有一个参数:
push_back(ch)
ch 表示要加入的字符
e.g.:

string s="Hello World";
s.push_back('!');

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World
然后在 s 末尾加入了字符 !

14. pop_back()

pop_back 函数用来删除字符串末尾的字符
e.g.:

string s="Hello World!!";
s.pop_back();

这个程序首先声明了一个 string 类型变量 s,并将其赋值为 Hello World!!
然后删除了 s 末尾的那一个字符

本贴仅列举常用操作

有错误请指正!

3 个赞

其实string需要<string>这个头文件

不需要,iostream 就包含有

也对

错误:0

以防万一,我还是改一下吧

有些函数需要

催更催更 :slightly_smiling_face: :slightly_smiling_face:

:frowning: 不想做

已完结,欢迎查看

终于更完了,好累