Cpp学习——string(1)

目录

​编辑

一,string简介

 二,string的使用

1.string对象的构造方式

2.string的遍历

1.for普通遍历

2.迭代器的方式遍历

3.string中的函数


 

一,string简介

要学习string就要先知道string是个啥。string是个啥呢?string其实就是标准库里面的一个容器,一个数据结构。记住,这是一个标准库里面的容器,但是不属于STL里面。关于string首先你要先了解以下几点:

1.string其实可以简单的理解为一个管理字符串的数组。

2.string的头文件是string.h。

3.string的原型是basic_string<char>是一个类模板模板,只不过是被tepdef成了string。

 二,string的使用

1.string对象的构造方式

string对象的构造方式分为两种:

1.无参构造

string s1;

这就像定义一个对象一样。

2.有参的构造

 
	string s2("hello world!");
	string s3(s2);
	string s4 = s3;
	string s5 = "hello world!";

有参构造可以用到“=”赋值操作符,也是拷贝的作用。

2.string的遍历

1.for普通遍历

在讲string的遍历之前就要先讲到string这个类里面有的[ ] 字符重载size()函数。[ ]字符重载让string的数据能像数组一样用下标访问,size()函数则可以让string取到最后一个字符的下标。所以,string也能像数组一样遍历:

for (int i = 0;i < s5.size();i++)
	{
		cout << s5[i] << " ";
	}
2.迭代器的方式遍历

在string这个类里面还支持着两种迭代器:

1.正向迭代器:iteractor,2.反向迭代器:reiverse_iterator

先来看看正向迭代器:

要使用正向迭代器,就要先知道string里面的两个函数:begin()和end()。这两个函数可以让我们取到字符开头的地址和字符结束的地址。所以使用正向迭代器方式如下:

string::iterator it = s5.begin();//因为iterator是string这个类里面的,所以要用::突破类域来访问使用。
	while (it != s5.end())
	{
		cout << *(it) << " ";
		it++;
	}

反向迭代器:

要想使用反向迭代器首先就要先知道rbegin()和rend()两个函数。这两个函数和begin()以及end()一样都是取字符串地址的。但是这两组函数取的地址是反的。反向迭代器的使用方式如下:

string::reverse_iterator it = s5.rbegin();
	while (it != s5.rend())
	{
		cout << *(it) << " ";
		it++;
	}
	cout << endl;

小技巧:

1.auto

因为使用迭代器时it的前面都要加上很长的类型,所以在这时我们便可以使用auto来对it的类型进行推导从而实现遍历:

auto it = s5.begin();

 while (it != s5.end())
{
	cout << *(it) << " ";
	it++;
}
cout << endl;



auto it = s5.rbegin();
while (it != s5.rend())
	{
		cout << *(it) << " ";
		it++;
	}
	cout << endl;

2.for语法糖

如果还想再偷一下懒就可以使用for语法糖:

for (auto ch : s5)
	{
		cout << ch << " ";
	}

3.string中的函数

1.拷贝函数:string (拷贝对象,起始位置,拷贝个数)

cout << s5 << endl;
string s6(s5, 6, 4);
cout << s6 << endl;

结果:

补充:当然,如果你想要打印某个字符后面的全部字符的话便可以:

string (拷贝对象,起始位置,npos),npos的值是size_t -1。

cout << s5 << endl;
string s6(s5, 6, s5.npos);
cout << s6 << endl;

结果:

 

2.clear函数与capacity函数。

clear函数是一个清理数据的函数,但是不会销毁内存。而capacity函数就是一个显示容器容量的函数。如:

    cout << s5 << endl;
	cout << "容量:"<<s5.capacity() << endl;
	cout << s5 << endl;
	s5.clear();
	cout << "清理数据后:"<<s5 << endl;
	cout << "容量:" << s5.capacity() << endl;

结果:

 

今天的内容就到这里了。


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值