C++string类常用方法

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string str1 = "hello";
	string* str2 = new string("hello");
	string str3 = "world";

	//获取字符串长度
	int length = str1.length();
	cout << "调用str.length()函数获取字符串长度:" << length << endl;
	length = str1.size();
	cout << "调用str.size()函数获取字符串长度:" << length << endl;

	//字符串连接
	string str4 = str1 + str3;
	cout << "字符串连接结果:" << str4 << endl;

	//字符串比较
	if (str1 < str3)
		cout << "字符串比较:" << "str1<str2" << endl;

	//获取字符串的第一个字符
	string::const_iterator it = str1.begin();
	cout << *it << endl;

	//获取字符串的最后一个字符
	//end是指向最后一个字符后面的元素,而且不能输出,所以cout << *it << endl;这样输出会报错
	it = str1.end();
	it--;
	cout << *it << endl;

	//倒置串
	reverse(str1.begin(), str1.end());
	cout << "倒置串:" << str1 << endl;

	//字符串转字符数组
	//不推荐的用法,但是需要了解
	string a = "abc123";
	//这里必须为const char *,不能用char *,不然下一句会报错
	const char *b;
	b = a.c_str();
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;
	a = "asd456";
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;
	//推荐用法
	string c = "abc123";
	char *d = new char[20];
	//因为这里没有直接赋值,所以指针类型可以不用const char *
	strcpy(d, c.c_str());
	cout << "c:" << c << endl;
	cout << "d:" << d << endl;
	c = "asd456";
	cout << "c:" << c << endl;
	cout << "d:" << d << endl;

	//查找串
	//find-从指定位置起向后查找,直到串尾
	string st1("babbabab");
	//1,默认从位置0(即第1个字符)开始查找
	cout << st1.find('a') << endl;
	//在st1中,从位置2(b,包括位置2)开始,查找a,返回首次匹配的位置
	cout << st1.find('a', 2) << endl;//4   
	//两句均输出1,原因是计算机中-1和4294967295都表示为32个1(二进制)
	cout << (st1.find('c', 0) == -1) << endl;//1 
	cout << (st1.find('c', 0) == 4294967295) << endl;//1   
	string st2("aabcbcabcbabcc");
	str1 = "abc";
	//从st2的位置2(b)开始匹配,返回第一次成功匹配时匹配的串(abc)的首字符在st2中的位置,
	//失败返回-1
	cout << st2.find(str1, 2) << endl;//6
	//取abcdefg得前3个字符(abc)参与匹配,相当于st2.find("abc", 2)
	cout << st2.find("abcdefg", 2, 3) << endl;//6   

	//rfind-从指定位置起向前查找,直到串首										  
	cout << st1.rfind('a', 7) << endl;//6

	//find_first_of-在源串中从位置pos起往后查找,只要在源串中遇到一个字符,
	//该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回-1
	string str6("bcgjhikl");
	string str7("kghlj");
	//从str1的第0个字符b开始找,g与str2中的g匹配,停止查找,返回g在str1中的位置2
	cout << str6.find_first_of(str7, 0) << endl;//2

	//find_last_of-与find_first_of函数相似,只不过查找顺序是从指定位置向前
	string str("abcdecg");
	//从str的位置6(g)开始向前找,g不匹配,再找c,c匹配,停止查找,返回c在str中的位置5
	cout << str.find_last_of("hjlywkcipn", 6) << endl;//5

	//find_first_not_of-在源串中从位置pos开始往后查找,只要在源串遇到一个字符,
	//与目标串中的任意字符都不相同,就停止查找,返回该字符在源串中的位置;
	//若遍历完整个源串,都找不到满足条件的字符,则返回-1

	//从源串str的位置0(a)开始查找,目标串中有a,匹配,..,找d,目标串中没有d(不匹配),
	//停止查找,返回d在str中的位置3
	cout << str.find_first_not_of("kiajbvehfgmlc", 0) << endl;//3   

	//find_last_not_of-与find_first_not_of相似,只不过查找顺序是从指定位置向前
	cout << str.find_last_not_of("kiajbvehfgmlc", 6) << endl;//3

	system("pause");
	return 0;

}

  • 12
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HUST_Miao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值