string类函数详解,带用法示例

C++中的字符串类型string

在C++中存储和使用字符串的方式不止字符数组,C++标准库当中将字符类型封装成< string >头文件,为字符串的处理和字符串问题解决提供了更高效的方法。

优点:
①不用考虑越界的问题
因为在定义string类型中,计算机会根据你输入的字符数来分配空间,所以在使用string字符串类型时,无需像定义字符数组时那样,需要提前规定数组空间大小。
②更加丰富的功能函数
在< string >标准库中内置了很多功能的函数,在使用过程中可以直接调用功能函数到程序中,大大减少了代码编写的代码量和时间。
③可操作性更强
string类型变量在程序中存储的量是字符串,我们通常认为字符串和字符以及其他常量有一定的区别,但是在string中,在使用的过程中无需去为他作区分,只需要把他看作是一个普通的变量中存储的常量即可,给编程带来的更高的可操作性。

string类型定义

在前面介绍中提到,string类型包含于< string >头文件中,所以在使用string类型或函数时一定要先导入头文件;
# include< string >//string类型字符串头文件

 1.   string s;    //生成一个空字符串s

2.    string s(str) //拷贝构造函数 生成str的复制品 
		//str系统内置
		
3.   string s(str,stridx) //将字符串str内“始于位置stridx”(从stridx开始往后所有)的部分当作字符串的初值

/*例:*/	string m="are you ok?";
			string s(m,4);//s结果为:you ok? 

 4.   string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”(从stridx开始往后strlen个字符)的部分作为字符串的初值

/*例:*/ string m="are you ok?";
		string s(m,4,2);//s结果为:yo

5.      string s(cstr) //将cstr字符串作为s的初值  

/*例:*/ string m="are you ok?";
		 string s(m);//s结果为:are you ok? 
		  
6.  string s(num,c) //生成一个字符串,包含num个c字符-初始化前面num个元素 

/*例:*/  string s(3,'a');//s结果为:aaa 
		
7.   string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值

/*例:*/ string m(s.begin(),s.end());
//将s字符串作为m的初始值
		string m(数量,字符);
//也可填入需要数量的字符作为初始值,如:string m(2,'a'); m字符串中为2个字符'a'

 8.  s.~string() or s=string()//销毁所有字符,释放内存
//将字符串清空

string操作

在常用的int、char、float 类型中,可以对该类型的变量进行基本的运算操作,那么我们说把string类型变量看作是一个和以上常用类型普通变量来进行使用,那么同样的在这里面我们同样的可以对他进行基础的操作。


常用操作:
比较:>,>=,<,<=,==,!=
连接:++=

1.assign()函数:为字符串赋值

//用法1:
	k=assign(n);//等同于k=n
	//注意a:n可以换为一个字符串,如:k=assign("are you") 下同
	//将字符串n的值赋给k
//用法2:
	k=assign(n,1,3);
	//将字符串n下标为1的位置到下标为3的位置添加到k中 /但不包含3下标的值/
	//k的结果为;ow
//用法3:
	k=assign(10,'c');
	//给k10个相同的字符c
2.swap()函数:交换字符串
//用法:
	swap(n,m);
	//将n与m字符串中的值互换
3.append 与  push_back()函数:添加元素到字符串末尾
    等同于+=操作
//用法:
	n.append(m);
	//将m字符串添加到n字符串末尾
	n.append(m,1,3);
	//将m字符串从下标为1的位置到下标为3的位置添加到n末尾
	n.push_back('b');//注意,push_back()函数只能添加单个字符
	//将字符b添加到末尾
4.insert()函数:插入字符
//用法:
	n.insert(1,m);
	//在原字符串n下标为1的位置插入字符串m
	n.insert(4,5,'w');  or  char c='w'; n.insert(4,5,c);
	//在原字符串n的下标为4的位置插入5个字符‘w’
	n.insert(0,n,1,3);
	//在原字符串n从下标为1的位置开始数3个字符,插入原串的下标为0的字符h前
5.erase()函数;删除字符函数
//用法
	n.erase(5);
	//将字符串n从下标为5的位置开始删除,直到结尾
	n.erase(5,3);
	//将字符串n从下标为5的位置开始,删除后3个字符
6.clear()函数:清空字符串,即删除全部
//用法:
	n.clear();
	//清空n字符串

7. replace()函数:替换字符
//用法:
	n.replace(2,2,m);
	//将n字符串从下标为2开始后两位,替换为m字符串
	n.replace(2,2,m,1,4);//m可以为字符数组:即char m[]或""类型常量
	//将n字符串从下标为2开始后两位替换为m字符串下标为1开始往后4个字符
	//即:将" w"替换为"0lle"
	n.replace(2,2,3,'c');
	//将n字符串下标为2开始往后两位字符,替换为3个‘c’
8. size(),length()函数:求字符串长度,返回字符串中有效字符数量
//用法:
	//该函数返回的是一个整型常量
	int len,len1;
	len=n.size();
	len1=m.length();
	//len中存的是n字符串长度
	//len1中存的是m字符串长度
9. max_size() //返回字符的可能最大个数
//用法:
	n.max_size();
	//返回string类型n字符串最大容量

10.  empty()    //判断字符串是否为空,是空时返回ture,不是空时返回false
//用法
	n.empty();
	//返回值为0 or 1

11.  capacity() //返回重新分配之前的字符容量


13. [ ], at() //存取单一字符
//用法
	char ch;
	ch=n.at(2);//将n字符串中下标为2的字符赋值给ch
	cout<<n.at(2);//输出n字符串中下标为2的字符
	
14. >>,getline() //从stream读取某值  (输入一个字符串)
//用法
	cin>>n//普通输入,以空格或回车或\0作为结束
	getline(cin,n);//输入一个字符串,能够输入空格\0,以回车作为结束
15. <<    //将某值写入stream(输出一个字符串)
//用法:
	cout<<n;
		
16. copy() //将某值赋值为一个C_string
//用法:
	n.copy(lin,5,2);//注意:这里的lin是char 数组;
	//将n字符串中下标为2开始往后5个字符放到lin字符数组中
17. c_str() //将内容以C_string返回
//用法
	char c[20];  
	string s=1234;  
	strcpy(c,s.c_str());
	//将s字符串变量存放到c字符数组当中
	//c_str()返回的是一个临时指针
	
18. data() //将内容以字符数组形式返回

19. substr() //返回某个子字符串
//用法
	string a=n.substr();//默认时的长度为从开始位置到尾
	string b=n.substr(5);//获得字符串s中 从第5位开始到尾的字符串
	string c=n.substr(5,3);//获得字符串s中 从第5位开始的长度为3的字符串
20. 查找
	1. begin()//begin()函数返回一个迭代器,指向字符串的第一个元素
	2. end()//end()函数返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置).
	3. rbegin()//返回一个逆向迭代器,指向字符串的最后一个字符。
	4. rend()//函数返回一个逆向迭代器,指向的开头(第一个字符的前一个位置)
	5. find() //在字符串s1中查找s2;(s1.find(s2))返回该子串在s1中第一次出现的位置
	6. find_firts_of()//在字符串s1中查找s2,s1.find_firts_of(s2)返回字符串中**任意字符**首次出现的位置

欢迎大家留言提问~~~

  • 12
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给包番茄酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值