c++string的特殊操作

本文详细介绍了C++中字符串的构造、子串提取、修改、搜索和比较操作,以及与数值之间的转换方法,包括insert、erase、assign、substr、find系列函数和数值转换函数如stoi、to_string等。此外,还探讨了字符串的比较函数compare及其应用场景。
摘要由CSDN通过智能技术生成

一、构造函数

string ss;
char chs[100];
string s1(chs, n);	
//s是chss指向的数组中前n个字符的拷贝,该数组至少含有n个字符,chs是const char* 
string s2(ss, pos2);	
//s是ss从下标pos2开始的字符的拷贝,应使pos2 <= s.size()
string s3(ss, pos2, len2);
//s是ss从下标pos2开始len2个字符的拷贝,最多只能拷贝ss.size() - pos2个字符

二、提取子串操作

string s = "123456789";
string subs1 = s.substr(3);			//表示从下标为3的位置取后面所有字符
string subs2 = s.substr(3,6);		//表示从下标为3的位置取后面6个字符

三、修改操作

1、提供除了迭代器版本外的下标版本的insert和erase

s.insert(s.size(), 5, '*');  //在s.size()即string尾部增加5个*
s.erase(s.size() - 5, 5);    //删除末尾的5个元素

2、提供接受c风格字符串的insert和assign

const char* cp = "Hello world!";
string s = "";

s.assign(cp, 0, 4);          //字符指针、起始位置、数量
s.insert(s.size(), cp + 5);  //下标位置、字符指针起始位置
s.insert(s.size(), cp + 11, 1);//下标位置、字符指针、数量
cout << s; //"Hell world!!"

s.assign(cp + 6, 5);  //接受字符指针和数量 
cout << s; //"world"

3、接受另一个string对象

string s1 = "Hello, world";
string s2 = "good";
s2.assign(s1);           //字符串
s1.insert(7, s2+" ");    //位置、字符串
s1.insert(7, s2, 0, 7);  //位置、目标、起始、数量

 4、append和replace函数

replace是调用erase和insert的简写形式

string s = "wqe";
s.append("666");
s.erase(1, 2);
s.insert(1, "52");
s.replace(1, 2, "52");    //与上两句话等价,在1位置开始后的两个字符替换为“52”

四、搜索操作

返回值:找到返回指定字符出现的下标,未找到返回NULL

string s = "abc";
s.find(args);				//查找s中args第一次出现的位置
s.rfind(args);			    //查找s中args最后一次出现的位置
s.find_first_of(args);			//在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args);			//在s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args);	    //在s中查找第一个不存在args 中的字符
s.find_last_not_of(args);		//在s中查找最后一个不在args中的字符

其中args是以下形式之一:

c,pos	    从s中位置pos开始查找字符c,pos默认为0
s2,pos	    从s中位置pos开始查找字符串s2,pos默认为0
cp,pos	    从s中位置pos开始查找指针cp指向的空字符结尾的C风格字符串,pos默认为0
//默认值为0,意味着可以省略
cp,pos,n	从s中位置pos开始查找指针cp指向的数组的前n个字符。pos和n无默认值

五、比较操作

compare函数实现比较操作

返回值:根据等于大于小于参数指定的字符串返回0、正数、负数

s2				//比较s和s2
pos1, n1, s2	//将s中从pos1开始的n1个字符与s2进行比较
pos1, , n1, s2, pos2, n2  //将s中从pos1开始的n1个字符与s2中从pos2开始的n2个字符进行比较
cp			//比较s与cp指向的以空字符结尾的字符数组
pos1, n1, cp		//将s中从pos1开始的n1个字符和cp指向的以空字符结尾的字符数组进行比较
pos1, n1, cp, n2	//将s中从pos开始的n1个字符与指针cp指向的地址开始的n2个字符进行比较

六、与数值的转换

1、数值转string

int val;
to_string(val)

2、string转数值

b表示转换所用基数(进制数),默认为10

p为size_t指针,用于表示s中第一个非数值字符的下标,默认值为0,即不保存下标

string s;
int p, b;
stoi(s,p,b)
stol(s,p,b)
stoul(s,p,b)
stoll(s,p,b)
stoull(s,p,b)
stof(s,p)
stod(s,p)
stold(s,p)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值