一、头文件
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
末尾的那一个字符