C++ string容器

什么是string容器?

在 C++ 中,std::string 是一个非常强大的容器,用于存储和管理字符串数据。它提供了一系列的成员函数和操作符,使得字符串的创建、操作和处理变得非常方便和高效。

string本质上是一个类!

string 与char*的区别

string是一个类,内部封装了char*,管理这个字符串,是char*型容器

char*是一个指针

string构造函数

void test()
{
//默认构造 string();创建一个空字符串
	string str;
	//使用字符串 s 进行初始化 :string(const char *)
	const char* str1 = "hhhhhhhhhhh";
	string s1(str1);
	cout << s1 << endl;
	//使用一个string对象初始化另外一个string对象
	//string(const string&str);
	string s2(s1);
	//使用n个字符串a初始化
	string s3(10,'a');
}

string赋值操作

等号赋值 以及内部成员函数assign()赋值

void test()
{
//默认构造 string();创建一个空字符串
	string str1;
	str1 = "hello!";
//类似拷贝构造
	string str2 = str1;
	//利用内部成员函数assign函数
	string str3;
	str3.assign("hello  c++");

	//把字符串s前n个字符赋值给当前
	//相当与把前五个字符也就是 hello放入容器
	string str4;
	str4.assign("hello  c++", 5);
	//类似拷贝
	string str5;
	str5.assign(str4);
	//n个字符a放进去
	string str6;
	str6.assign(10, 'a');
}

string字符串拼接

void test()
{
	//末尾追究字符串
	string str1 = "I";
	str1 += " love U";
	cout << str1 << endl;
	//末尾添加字符
	str1 += 'a';

	//利用内部成员函数 append
	string str2;
	str2.append("iiiiii");
	//把字符串的前n个拼接到末尾 string& append(const char*s,int n)
	//将game拼接到后面
	str2.append("game over", 4);
	//直接把别的字符串追加到末尾
	string str3;
	str3.append(str2);
	//string& append(const char*s,pos,int n) 从pos位置处截取n个!
	string str4;
	//从str2中,iiiiii,从第0个位置截取3个,也就是截取iii
	str4.append(str2, 0, 3);
}

string查找和替换

查找:查找指定的字符串是否存在     find 从左往右  rfind 从右往左

替换:在指定的位置替换字符串     replace

void test01()
{
	//find 函数从左往右查找     rfind函数 从右往左查
	//查到了返回 出现的位置
	//没查找返回 -1
	string str1 = "abcdef";
	int pos = str1.find("de");
	if (pos == -1)
	{
		cout << "未找到!" << endl;
	}
	else {
		cout << "找到字符串,pos =" << pos << endl;
	}

	//替换操作 replace ()
	//从1号位置起 连这3个字符,替换为1111
	//abcdef--------->a1111ef
	str1.replace(1, 3,"1111");
}

string字符串比较

比较的方式:按照字符串的ASCII码进行对比

利用compare函数,一般用于判断数据是否相同,判断谁大谁小意义不大

=   返回0  

> 返回1

< 返回-1

void test02()
{
	string str1 = "hello";
	string str2 = "hello";
	if (str1.compare(str2) == 0)
	{
		cout << "str1=str2" << endl;
	}else if(str1.compare(str2) == 1)
	{
		cout << "str1>str2" << endl;
	}else if(str1.compare(str2) == -1)
	{
		cout << "str1<str2" << endl;
	}
}

string字符提取

void test03()
{
	string st1 = "hello";
	//通过【】访问单个字符
	for (int i = 0; i < st1.size(); i++)
	{
		cout << st1[i] << endl;
	}
	//通过at方式访问单个字符
	for (int i = 0; i < st1.size(); i++)
	{
		cout << st1.at(i)<< endl;
	}
	//修改单个字符 将字符第一改成x
	st1.at(1) = 'x';
	st1[1] = 'x';
}

string插入删除操作

插入:insert()

删除:erase()

void test03()
{
	string st1 = "hello";
	//插入: 从第一个位置,插入“111”
	//hello--------->h111ello
	st1.insert(1, "111");
	//删除 从第1个位置起,删除3个字符
	//h111ello--------->hello
	st1.erase(1, 3);
}

string字串

从字符串中获取想要的子串

string substr(int pos=0,int n= npos)const;     返回由pos开始的n个字符组成的字符串

void test03()
{
	string st1 = "hello";
	//求子串
	string subStr = st1.substr(1, 3);
	cout << subStr << endl;
}

void test04()
{
	string email = "84651654895146@137.com";
	//从邮箱中获取用户信息
	//找到@的位置
	int pos=email.find("@");
	cout << pos << endl;
	//截取用户名
	string Username = email.substr(0, pos);
	cout << Username << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值