在C++中string提供了字符串的添加、删除、替换、查找等丰富的算法,使用时是需要包含
(一)定义:string s;此时s是一个空串,长度为0;
(二)string类型变量的赋值:
(1)直接赋值:
string s;
s=”hello world”;
(2)用字符指针赋值:
string s; char ss[5000];
scanf(“%s”,ss);
s=ss;
(三)在尾部添加字符串或者字符:
(1)尾部添加一个字符,用“+”
string s;
s=s+’a’;
(2)尾部添加一个字符串(两种方式)
用“+”方式添加:
string s;
s=s+”abc”;
用append()方法添加:
string s;
s=s.append(“abc”);
#include
#include
#include
#include
using namespace std;
int main()
{
string s="test";
//在尾部添加一个字符
s=s+'1';
cout<
(四)在某一位置插入元素:
insert(位置,char);其中,位置用迭代器表示,不是下标。
#include
#include
#include
using namespace std;
int main()
{
string s="123";
string ::iterator pos=s.begin();
pos++;
s.insert(pos,'4');
cout<
(五)访问:
(1)整体访问:string s=”123”; cout<
(2)逐个访问,使用下标[ ]
string s;
s[0]
(3)string对象作为vector元素时的访问(P29)
vector
v[0],v[0][0]
(六)删除:
(1)erase(位置):删除单个元素;
(2)erase(位置1,位置2) :删除区域内的多个元素,其中,位置用迭代器表。示,不是下标。
#include
#include
#include
#include
using namespace std;
int main()
{
string s="1234567";
string ::iterator pos=s.begin();
//删除单个元素
s.erase(s.begin());
cout<
(七)求字符串长度/判空:
(1)length()
(2)empty():为空返回1,不为空返回0
#include
#include
#include
#include
using namespace std;
int main()
{
string s="1234567";
//字符串长度:
cout<
(八)替换:replace(位置,长度,替换字符串),此处位置是下标。
#include
#include
#include
#include
using namespace std;
int main()
{
string s="1234567";
s.replace(1,1,"abc");
cout<
(九)查找字符或者字符串:
Find()函数,查找一个字符char或一个子串string,若找到返回找到位置的下标,若没有找到则返回一个值string::npos。
#include
#include
#include
#include
using namespace std;
int main()
{
string s="1234567";
int pos=s.find("234");
if(pos!=string::npos)
cout<<"found"<
(十)字符串比较:
比较函数 compare(),实际上是按照ASCII的大小比较各个字符串,若两个字符串相等返回0,若第一个字符串大于第二个字符串返回1,反之返回-1。
(十一)algorithm中提供的算法:
(1)反向排列算法:reverse(位置1,位置2);
(2)排序算法:sort(位置1,位置2,比较函数) ;
(3)计数算法:count(位置1,位置2,字符)。
#include
#include
#include
#include
using namespace std;
int main()
{
string s="1234567";
//reverse反向排列
reverse(s.begin(),s.end());
cout<
(十二)string与char数组:
(1)char数组 char ss[20]
输入:scanf(“%s”,ss); cin>>ss;
输出: printf(“%s”,ss); cout<
(2)string对象,string s
输出:s=ss;printf(s.c_str()); cout<
输入:scanf(“%s”,ss); s=ss; cin>>s;
注:成员函数c_str()用于获取stirng所对应的C语言的数组;若事先定义了string类型的变量,对该变量按照C中字符串的输入方式赋值,则必须在赋值之前为该变量分配适当的内存空间,例如:
#include
#include
#include
#include
using namespace std;
int main()
{
string s;
s.resize(10);
scanf("%s",s.c_str());
printf("%s\n",s.c_str());
return 0;
}
(十三)分离string中的子串:
sscanf(string ,”格式说明”, 变量地址表列);
#include
int main ()
{
char sentence []="Tom is 12 years old";
char str [20];
int i;
sscanf (sentence,"%s %*s %d",str,&i);
printf ("%s -> %d\n",str,i);
return 0;
}
输出结果:Tom -> 12
sprintf(string ,”格式说明”, 变量地址表列);
#include
int main ()
{
char buffer [50];
int n, a=5, b=3;
n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
printf ("[%s] is a %d char string\n",buffer,n);
return 0;
}
[5 plus 3 is 8] is a 13 long string
(十四)string与数值的相互转换
string convertToString(double );
double convertFromString(string);
#include
#include
#include
using namespace std;
string converToString(double x)
{
ostringstream o;
if(o<>x)
return x;
return 0.0;
}
int main()
{
string s="123456";
int n;
n=converFromString(s);
cout<
string的操作如下图,大家可以查看相关的帮助手册