string 常见用法
在C语言中,我们使用字符数组char str[]来存放字符串
使用scanf("%s",str)来读取字符串
而在C++中,我们使用string对字符串常见的需求功能进行了封装
string读取和输出字符串,只能采用cin和cout
string str;
cin>> str;cout<<str;
string内容的访问:
(1)通过下标访问
可以像字符数组那样直接去访问string
str[i]
(2)通过迭代器访问
string::iterator it;
for (string::iteratr it=str.begin();it!=str.end();it++){
printf("%c",*it);//通过*it来访问string里的每一位
}
string和vector一样,支持直接对迭代器进行加减某个数字。
str.begin()+3
string 常用函数实例解析
(1)string可以直接通过 == != < >等进行比较大小,比较规则是字典序
(2)size()/length():长度大小
(3)insert()
insert(pos,string)在pos位置插入字符串string
string str = ”abcxyz“,str2=”opq“;
str.insert(3,str2);
输出str结果为abcopqxyz
insert(it,it2,it3)
it为原字符串的欲插入位置的地址,it2和it3为待插字符串的首尾迭代器
str.insert(str.begin()+3,str2.begin(),str2.end());
(4)erase
删除单个元素
erase(it)it为需要删除的迭代器
str.erase()
删除一个区间内的元素
erase(first,last)first为需要删除的区间的起始迭代器,last为需要删除末尾迭代器的下一个地址
str.erase(it1,it2)
(5)substr(pos,len)返回从pos号位开始,长度位len的子串
str.substr(0,5);
(6)str.find(str2)
当str2是str的子串时,返回其在str中第一次出现的位置
如果str2不是str的子串,那么返回string::npos
str.find(str2,pos)从str的pos号位开始匹配str2
(7)replace
str.replace(pos,len,str2);把str从pos号位开始,长度位len的子串替换位str2
str.replace(it1,it2,str2)把迭代器[it1,it2)位置替换为str2
反转字符串,也可以使用递归来做
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
string str;
string reversestr(int n){
if (n==1)return str.substr(n-1,1);
else return str.substr(n-1,1)+reversestr(n-1);
}
int main(){
cin >> str;
cout << reversestr(str.size());
return 0;
}