stl-string类

String类的函数及运用,主要包括在头文件“#include“string””里。下面是关于我对string类运用的一些理解。
1.string声明字符串:
1) string s //声明一个空字符串
2) string str(“12345678xxxxx”);//声明一个字符串并在括号内定义
3) string str_1(str);//声明一个字符串并将str字符串的内容复制到str_1中
4) 字符串还可以用 str=“123456”的方式来进行重新赋值
2.string字符串长度
在测量字符串的长度时,有两个函数,size()和length(),且两个函数都是返回字符串的字符数(不包括“\0”)
如字符串string str(“12345678”);可以用str.length()和str.size()返回字符串的长度,对于该字符串两者都返回8;下述代码展示了如何使用者两个函数

string str_1("12345678");
size=str_1.size();
length=str_1.length();

3.string字符串的遍历
获取字符串单个元素的方法有两种,一是用字符数组的方法,即,将字符串当做字符数组,用数组的方式来遍历;二是用函数at()来遍历。下述代码展示了如何遍历字符串

string s("123456");
for(int i=0;i<s.length();i++)
		cout<<s[i];
cout<<endl;
for(int i=0;i<s.size();i++)
		cout<<s.at(i);
	cout<<endl;

4.string字符串的比较
string字符串比较是用的compare()函数,若参与比较的两个串值相同,则函数返回 0;若字符串 S 按字典顺序要先于 S2,则返回负值;反之,则返回正值。

	string s1("abcdef");
	string s2("abcdka");
	string str("abc");
	int a=s1.compare(s2);//完整的s1和s1比较 
	int b=s1.compare(0,4,s2,0,4); //s1的前四个字符与s2的前四个字符比较
	int c=s1.compare(0,3,str);//s1的前三个字符与str比较

5.string的一些常用函数
1)assign()函数(赋值函数)

	string s1("123456");
	string s2;
	s2.assign(s1);//将s1全部赋值给s2 
	s2.assign(s1,1,5);//将子串23456赋值给s2;
	s2.assign("123456",5);//将字符串“123456”的前五个字符赋值给s2
	s2.assign(5,'c');//给s2赋值为五个c

2)insert()函数(插入函数)

	const string a("123456");
	string b("abc");
	b.insert(1,a);//**在b字符串的第一位(也就是a)后面插入a字符串的全部内容** 
	cout<<b<<endl;
	b="abc";
	b.insert(1,a,3,3);//**在第一位后面插入a字符串第3个字符后面的三个字符即456**
	cout<<b<<endl;
	b="abc";
	b.insert(1,5,'c');//第一位后面插入五个c
	cout<<b<<endl;
	b="abc";
	b.insert(1,"123456",3);//在第一位后面插入字符串“123456”的前三个字符
	cout<<b<<endl;

还可以使用迭代器来进行操作,这里我就不再细说了,实际上大部分的string函数都可以用迭代器进行操作
3)append函数(追加函数)

	string A;
	string B;
	A="ello";
	B="123456";
	A.append(B);//把B字符串的全部内容追加到A后面
	cout<<A<<endl; 
	A="ello";
	A.append(B,2,4);//把B从第2个字符后的4个字符追加到A后,即,3456 
	cout<<A<<endl;
	A="ello";
	A.append(5,'c');
	cout<<A<<endl;//在A后追加5个c

5) replace函数(替换)

string s1("123456");
  	string s2("abcdefg");
    s1.replace(1,4,s2);//将第一位后面的四个字符替换为s2,结果为1abcdefg6; 
    cout<<s1<<endl;
	s1="123456";
	s1.replace(1,5,"abcdef",3); //将第一个字符后的三个字符替换为字符串的前三个字符,结果为1abc
	s1="123456";
	s1.replace(1,4,s2,2,5);//将s1中第一位后面的4个字符替换为s2中第二位后面的五个祖父,结果为1cdefg6
	s1="123456";
	s1.replace(1,4,5,'c');//将第一位后面的四个字符替换为 五个c

6) erase函数(删除函数)

	string s1("abcdef");
	s1.erase(0,3);//删除前三个字符 
	s1="abcdef";
	string::iterator it=s1.begin()+2;
	s1.erase(it); //删除迭代器it处的字符,即"c"; 
	s1="abcdef";
	string::iterator first=s1.begin()+1;
	string::iterator last=s1.end();
		s1.erase(first,last);//删除迭代器first和last之间的字符,结果只剩a`

7) find()函数和 rfind()(查找函数)

string::size_type m=str.find('P',5);//函数的第1个参数是被搜索的字符、第2个参数是在源串中开始搜索的下标位置
	string::size_type rm=str.rfind('P',5);//rfind的参数与find一致,但是是逆序查找
	string::size_type n=str.find("some",0);//搜索字符串
	string::size_type mo=str.find("drugs",0,5);//5表示被搜索字符串的个数

若查找 find() 函数和其他函数没有搜索到期望的字符(或子串),则返回 npos;若搜索成功,则返回搜索到的第 1 个字符或子串的位置。其中,npos 是一个无符号整数值,初始值为 -1。当搜索失败时, npos 表示“没有找到(not found)”或“所有剩佘字符”。
rfind是逆序查找,返回逆序的第一个字母

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值