C++的string类的简单使用

一.string类的定义:
Strings are objects that represent sequences of characters

简单粗暴的直译:
string是表示字符序列的对象

二.string类对象的常见构造
(1)string 变量名
创建了一个空的字符串
示例:

string str;	

(2)string 变量名(已有的string类型的变量)
将存在的变量的内容拷贝到新创建的对象中
示例:

//拷贝str的内容给cpy
	string cpy(str);		

(3)string 变量名(字符串)
将字符串的内容拷贝到新创建的对象中
示例:

	string str1("avc");

(4)string 变量名(已经存在的string对象,起始位置下标,要拷贝的数据的个数)
示例:

//从str1为1处,截取两个字符,拷贝到str2中
string str2(str1, 1, 2);

(5)string 变量名(字符串,要拷贝的元素个数)
示例:

//从字符串的前六个字符拷贝到str3
string str3("rjifjierjfiji", 6);		

(6)string 变量名(要拷贝的个数,要拷贝的字符)
示例:

//将10个a组成的字符串拷贝到str4中
string str4(10, 'a');

(7)string 变量名=已经存在的string对象/字符串
示例:

//单参构造的隐式类型转换
string str5 = "wjeijei";		

代码演示:

string str;		//创建了一个空的字符串
	string cpy(str);		//拷贝str的内容给cpy
	string str1("avc");
	string str2(str1, 1, 2);		//从str1下标为1处,截取两个字符
	string str3("rjifjierjfiji", 6);		//截取六个字符
	string str4(10, 'a');		//创建10个a组成的字符串
	string str5 = "wjeijei";		//单参构造的隐式类型转换

在这里插入图片描述
三.string类对象的迭代器(interator)
1.begin:
string对象的起始位置
使用string::iterator 来声明
示例:

string str = "12345";
//起始位置的迭代器
string::iterator it = str.begin();	

2.end:
string对象的最后一个元素的下一个位置
使用string::iterator 来声明
示例:

//结束位置的迭代器
string::iterator it1 = str.end();	

两个正向迭代器的代码演示:

//迭代器
void test()
{
	string str = "12345";
	string::iterator it = str.begin();	//起始位置的迭代器
	string::iterator it1 = str.end();	//结束位置的迭代器
	for (; it < it1; ++it)				//正向移动,向后移动一个位置
	{
		//迭代器的解引用
		cout << *it << " ";
		*it = 'O';		//可以通过迭代器进行内容的修改
	}
	cout << endl;
	for (it=str.begin(); it < it1; ++it)
	{
		//迭代器的解引用
		cout << *it << " ";
	}
	cout << endl;

	const string str1 = "I am lack of faculty";
	//只读迭代器
	string::const_iterator it2 = str1.begin();
	while (it2 != str1.end())
	{
		cout << *it2 << " ";
		//*it2 = 'x';//修改内容不支持
		it2++;
	}
	cout << endl;
}

运行结果:
在这里插入图片描述

3.rbegin:
string对象的最后一个元素
使用string::reverse_iterator来声明
示例:

//rbegin:最后一个元素的位置
string::reverse_iterator it = str.rbegin();		

4.rend:
string对象的第一个元素的前一个位置
使用string::reverse_iterator来声明
示例:

//rend:第一个元素的前一个位置
string::reverse_iterator it = str.rend();	

两个反向迭代器的代码演示:

//反向迭代器
void test()
{
	string str = "12345";
	string::reverse_iterator it = str.rbegin();		//rbegin:最后一个元素的位置
	while (it != str.rend())						//rend:第一个元素的前一个位置
	{
		cout << *it << " ";
		//反向移动,向前移动一个位置
		//可以进行内容的修改
		*it = '6';
		it++;
	}
	cout << endl;
	for (it = str.rbegin(); it != str.rend(); ++it)
	{
		cout << *it << " ";
	}
	cout << endl;

	//只读的反向迭代器
	string str1 = "23456";
	string::const_reverse_iterator it1 = str1.rbegin();
	while (it1 != str1.rend())
	{
		cout << *it1 << " ";
		//*it1 = '9';			//只读的反向迭代器不支持修改
		it1++;
	}
	cout << endl;

	//只读的crbegin,crend
	string::const_reverse_iterator it2 = str1.crbegin();
	while (it2 != str1.crend())
	{
		cout << *it2 << " ";
		//*it2 = 'o';		//只读,不能修改
		it2++;
	}
	cout << endl;
}

运行结果:
在这里插入图片描述
通过iterator实现的范围for代码演示:

//范围for:底层是通过iterator实现的
void test()
{
	//范围for输出数组内容
	int arr[] = { 1, 2, 3, 4, 5 };
	for (const auto& e : arr)
	{
		cout << e << " ";
	}
	cout << endl;
	//范围for修改数组内容
	for(auto& e : arr)
	{
		e = 100;
	}
	for (const auto& e : arr)
	{
		cout << e << " ";
	}
	cout << endl;


	string str = "abcde";
	for (const auto& e : str)
	{
		cout << e << " ";
	}
	cout << endl;
	for (auto& e : str)
	{
		e = 'x';
	}
	for (const auto& e : str)
	{
		cout << e << " ";
	}
	cout << endl;
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值