栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++string的特殊操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++string的特殊操作

一、构造函数
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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号