目录
string容器说明:
string型变量的使用并不需要特殊的头文件,但是一部分的string字符串的操作在使用时需要加上头文件:#include<string>
1、string对象的创建
string s;//创建一个空字符串,长度为0
2、string对象的赋值
(1)直接给字符串对象赋值
string s;
s="abcdefg";
(2)把字符指针赋值给一个字符串对象
string s;
char a[1000];
scanf("%s",&a);//scanf的输入速度比cin快,且scanf不支持string对象
s=a;
3、string字符串的一些常用方法
(1)s.append(str);//从字符串s尾部的添加字符串str,只能添加字符串,不能添加字符
(2)s.insert(it+n,c);//it是迭代器,把字符c插入迭代器位置为n的地方(下标从0开始)
(3)s.insert(p,str);//把字符串str插入到下标p的位置(下标从0开始)
(4)s.erase(it+n);//it是迭代器,删除迭代器位置为n的元素(下标从0开始)
(5)s.erase(it+m,it+n);//it是迭代器,删除迭代器位置为m至n-1区间的元素(下标从0开始)
(6)s.length();//返回字符串长度
(7)s.empty();//判断字符串是否为空
(8)s.replace(p,n,str);//从下标p开始,把后面的n个字符替换成字符串str
(9)s.find(c/str);//返回字符串s中第一次出现字符c或者字符串str的下标值
(10)s.compare();//比较两个字符串的大小,如果str1==str2返回0,如果str1>=str2返回一个正数,如果str1<=str2返回一个负数
(11)s.begin();//返回字符串的首地址
(12)s.end();//返回字符串的尾地址
(13)s.clear();//清空字符串,一般如果清空一个字符串就直接给它赋空字符串,即s="";
4、string中的一些逻辑运算与简便操作
(1)s1>/</==/!=/>=/<=s2;//两个字符串可以进行逻辑判断
(2)s1=s2;//两个字符串相互赋值
(3)s1=s1+s2;//在s1尾部追加字符串或者字符
(4)s1=s2+s3;//两个字符串进行相加,结果与两个字符串的相加顺序有关 例:s2="asd" s3="qwe" s1="asdqwe"
5、string常用方法的操作示例
#include<iostream>
#include<string>
using namespace std;
int main()
{
//定义一个字符串变量
string s;
//从字符串s尾部添加一串字符串
s.append("hello!");
cout<<"s.append(): "<<s<<endl;
//在指定迭代器位置插入一个字符
s.insert(s.begin()+1,'q');
cout<<"s.insert(): "<<s<<endl;
//在指定位置插入一个字符串
s.insert(2,"asd");
cout<<"s.insert(): "<<s<<endl;
//删除指定迭代器位置的一个字符
s.erase(s.begin()+1);
cout<<"s.erase(): "<<s<<endl;
//删除迭代器指定区间的字符
s.erase(s.begin()+1,s.begin()+4);
cout<<"s.erase(): "<<s<<endl;
//返回字符串的长度
cout<<"s.length(): "<<s.length()<<endl;
//判断字符串是否为空
if(s.empty())
cout<<"Is empty"<<endl;
else
cout<<"Not empty"<<endl;
//字符串替换
s.replace(2,3,"asd");
cout<<"s.replace(): "<<s<<endl;
//查找字符
cout<<"s.find(): "<<s.find('a')<<endl;
//查找字符串
cout<<"s.find(): "<<s.find("ea")<<endl;
//比较两个字符串的大小
string s1,s2;
s1="asd";
s2="qwe";
if(s1.compare(s2)==0)
cout<<"s1=s2"<<endl;
else if(s1.compare(s2)>0)
cout<<"s1>s2"<<endl;
else if(s1.compare(s2)<0)
cout<<"s1<s2"<<endl;
//简便操作
string s3,s4;
s3="zxc";
s1=s1+s2;
cout<<"s1: "<<s1<<endl;
s4=s1+s3;
cout<<"s4: "<<s4<<endl;
//清空字符串
s="";
//判断字符串是否为空
if(s.empty())
cout<<"Is empty"<<endl;
else
cout<<"Not empty"<<endl;
}
结果:
s.append(): hello!
s.insert(): hqello!
s.insert(): hqasdello!
s.erase(): hasdello!
s.erase(): hello!
s.length(): 6
Not empty
s.replace(): heasd!
s.find(): 2
s.find(): 1
s1<s2
s1: asdqwe
s4: asdqwezxc
Is empty