C++标准库string类型操作总结

本文详细介绍了 C++ 中 string 类的定义、初始化方法、常见操作、查找与比较方法及字符处理技巧。涵盖 string 对象的基本使用及高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.、string对象的定义和初始化

string s1;         			//空串
string s2(s1);         		//将s2初始化为s1的一个副本
string s3("value");    		//s3初始化并赋值
string s4(n,"c");    		//s4初始化,赋值为n个'c'
string s5(b,e);        		//初始化s5为迭代器b,e范围内的副本
string s6(cp);        		//用c风格的字符串初始化
string s7(cp,n);    		//cp前n个元素的副本
string s8(s2,pos2);    		//s8为s2从pos2开始到结尾的副本
string s9(s2,pos2,len2);	//同上,不过的长度为len2(不超过s2的长度)

//其中有一种方法需要注意:
char no_null[] = {'H','i'};
string s10(no_null);    	//错误,不是以null结尾的串
string s10(no_null,2);    	//ok,可以自动添加null结尾

二、string的操作

s.empty();    			//判断s是否为空,相当于s.size()==0
s.size();    			//s的长度
s[n];        			//n位置的字符(左值返回)
s1+s2;        			//返回s1和s2连接的串
s1=s2;        			//把s1替换为s2的副本
s1==s2;        			//判断s1,s2是否相等
!=,<,<=,>,>=    		//保持惯有的含义


s.insert(p,t);    			//在迭代器p指向的元素前插入t,返回指向t的迭代器
s.insert(p,n,t);			//同上,插入n个t,返回void
s.insert(p,b,e);			//插入迭代器b,e间的元素,返回void
s.insert(pos,n,c); 			//在pos前插入n个字符c,返回s的引用
s.insert(pos,s2);			//在pos前插入s2,返回s的引用
s.insert(pos,s2,pos2,len);  //在pos前插入s2中从pos2开始的len个字符,返回s的引用
s.insert(pos,cp,len);		//pos前插入cp数组(c风格字串)的前len个字符,返回s的引用
s.insert(pos,cp);			//在pos前插入cp,返回s的引用


s.assign(b,e);    		//用b,e间的元素替换s,返回s
s.assign(n,t);    		//用n个t替换s,返回s
s.assign(s2);    		//用s2的副本替换s,返回s的引用
s.assign(s2,pos2,len);	//用s2从pos2开始的len长的副本替换s,返回s的引用
s.assign(cp,len)		//用cp的前len个字符副本替换s,返回s的引用
s.assign(cp)    		//用cp的副本替换s,返回s的引用


s.erase(p);    		//删除迭代器p指向的元素,返回指向后一个元素的迭代器
s.erase(b,e);    	//删除b,e间的元素,返回值同上
s.erase(pos,len);	//删除从pos开始的len个字符,返回s的引用


s.substr(pos,n);	//返回s中从pos开始的n个字符组成的串
s.substr(pos);    	//返回s中从pos开始到结尾的串
s.substr();    		//返回s的副本


//<< append,replace的args的说明
s2        		//string
s2,pos2,len2    //s2中下pos2开始的len2个字符
cp        		//c风格的串
cp,len2        	//cp指向以空结束的前len2个字符
n,c        		//字符c的n个副本
b2,e2        	//迭代器b2,e2范围内的所有字符

s.append(args);    //将args串接在s的后面,返回s的引用

//删除s中从pos开始的len个字符,用args串替换,返回s的引用. args不能为b2,e2
s.replace(pos,len,args);
//删除迭代器b,e范围内的字符,用args替换,返回s的引用.args不能为s2,pos2,len2
s.replace(b,e,args);

三、string的查找操作

s.find(args);    			//args的第一次出现
s.rfind(args);    			//最后一次出现
s.find_first_of(args);		//args中任意字符的第一次出现
s.find_last_of(args);		//args中任意字符的最后一次出现
s.find_first_not_of(args);	//查找第一个不属于args的字符
s.find_last_not_of(args);	//查找最后一个不属于args的字符

四、string的比较判断

//<< compare的返回值: >0 s大; <0 s小; =0 二者相等
s.compare(s2);    				//比较s和s2
s.compare(pos1,n1,s2);			//s从pos1开始的n1个字符与s2比较
s.compare(pos1,n1,s2,pos2,n2);	//s从pos1开始的n1个字符与s2从pos2开始的n2个字符比较
s.compare(cp); 					//比较s和cp
s.compare(pos1,n1,cp); 			//s从pos1开始的n1个字符与cp比较
s.compare(pos1,n1,cp,n2); 		//s从pos1开始的n1个字符与cp的前n2个字符比较

五、string对象中字符处理

需要包含头文件:#include<cctype>

<span style="color:#999999;">i</span><span style="color:#666666;">salnum(c);    //true if c 是数字或字母
isalpha(c);    //true if c 是字母
iscntrl(c);    //true if c 是控制字符
isdigit(c);    //true if c 是数字
isgraph(c);    //true if c 不是空格但可打印
islower(c);    //true if c 是标点符号
isprint(c);    //true if c 是空白字符
ispunct(c);    //true if c 是大写字母
isspace(c);    //true if c 是空白字符
isupper(c);    //true if c 是大写字符
isxdigit(c);   //true if c 是十六进制数
tolower(c);    //将c转换为小写
toupper(c);    //将c转换为大写</span>


PS: 欢迎关注微信公众号:开发者小黑屋,分享优质技术干货。 

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值