重生之C++学习:string的使用(二)

接下来我们继续string使用的学习

目录

Append

​编辑

Insert

Erase

Replace

Swap 

Find与相关Find


Append

  append是在string对象后插入字符串的函数,与之类似的为push_back函数 ,也可以通过重载后的+=来实现

// string的插入
void test_string5() {

	string s1("hello");
	string s2;
	s2.push_back('w');
	cout << s2 << endl;
	s2.append("orld");    
	cout << s2 << endl;
	s1.append(s2);    // 可以插入整个对象
	cout << s1 << endl;

	s1 = "my";
	s1 += s2;    // 加等比较好用
	cout << s1 << endl;

}

也可以用 + 来实现,但是+具有局限性,并且存在两次拷贝

Insert

  与append类似也为插入函数,不过与append尾插不同的是,insert函数为头插函数

上图为insert重载,有多种用法,下面我们距离插入单个字符的例子

// 头插语法

对象名.insert(开始的位置, 插入字符数量, 插入字符);

string str("hello");

str.insert(0,1,'a');

Erase

str.erase(2); // 删除从第二个字符开始,直至最后一个

Replace

replace就是替代某一块区域具体还是要通过文档来写,ps:insert / erase / replace 经常涉及数据的挪动,导致效率过低,所以我们一般不适用

Swap 

有时候我们可能需要将s2替代为s1,联系学过的内容我们可以通过重载的“=”或者是直接用assign直接覆盖,但是string里内置有swap函数,可以更好的提高效率吧

实质上就是对s2,s3的三个成员变量部分进行交换,在打印中我们也能看出来

其中的c_str()为查找到string对象中的数组指针的地址

Find与相关Find

find顾名思义就是寻找,在string中就是寻找某一个字符或者字符串在哪个位置

当我们实际应用的时候需要借助substr()来截取字符串,参数为(位置,长度)

	size_t i3 = str3.find(':');
	if (i3 != string::npos)			// 如果为string::npos则为查找至最后一个字符仍未找到
		s3 = str3.substr(0, i3);
	else
		cout << "未找到i3" << endl;
	
	size_t i4 = str3.find('/', i3 + 3);
	if (i4 != string::npos)
		s4 = str3.substr(i3 + 3, i4 - (i3 + 3));
	else
		cout << "未找到i4" << endl;
	
	cout << s3 << endl;
	cout << s4 << endl;
	// 以此类推最终将所以字符分区

输出如下:恰好分区

find_first_of()实际上作用是    找到符合设定的所有字符,这一段代码恰好将找到的的字符赋值为*,然后find_first_not_of则是找到不符合设定的所有字符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值