C++——string类

1. string类

1.1 基本概念

stringC++ STL 中定义的标准类,与C语言中的字符数组(char[])类似,但是有更完善的API,使用更加便捷。C++中使用string类,要引用头文件<string>

1.2 string的构造

string有好几个构造函数,使用方式如下:

	string str1;		        //不初始化,默认为空
	string str2("Hello");		//使用字符串"Hello"初始化,str2中内容为"Hello"
	string str3(str2);	        //使用string类型的str2初始化,str3与str2内容相同
	string str4(3, 'A');		//使用多个重复的字符进行初始化,str4中内容为"AAA"
	string str5(str2, 1, 4);	//使用另一个string类的一部分来初始化,str5内容为str2的第一个字符往后,总共4个字符长度的内容,就是"ello"
	string str6("world", 1, 3);	//同样的,可以使用字符串的一部分进行初始化,原理同上,str6中内容为"orl"

上述初始化后,从str1到str6输出依次为

1.2 string对象的连接

字符串的拼接,在C语言中要使用strcat()函数(需要考虑地址是否足够,指针是否正确),在string类中,操作就简单很多,可以使用append()函数来完成字符串的拼接

	string str1("123"), str2("456"), str3("789");
	str1.append(str2);				//str1="123456"
	str1.append(str3, 0, 2);		//str1="12345678",注意两个数字(0,2)分别是,起始位置,长度,而不是起始和终止位置
	str1.append(3, 'A');			//str1="12345678AAA"
	str1.append("UVWXYZ", 3, 3);	//str1="12345678AAAXYZ"

1.3 string对象的比较

string对象的比较可以直接使用比较运算符(">", "<", "=", "!="等),对于string子串的比较,可以使用compare()方法,如下:

	string str1("123"), str2("456"), str3("ABC012");
	cout << (str1 > str2) << endl;			//比较str1和str2,str1不大于str2,false,输出0
	cout << str1.compare(str3) << endl;		//比较str1和str3,str1小的时候返回-1,(大的时候返回1,相等返回0)
	cout << str1.compare(1, 2, str2, 3, 4);	//比较str1中子串[1,2](就是"23")与str2中子串[3,4]("01")的大小,返回1

1.4 string对象的查找

在串中查找某个字串第一次出现的位置C语言中有strstr()函数(返回主串中子串第一次出现的位置,不存在返回NULL,自己用C语言实现strstr()函数可以用经典的KMP模板匹配算法)。string类中的find()函数具有相同的功能。最常用的查找就是find(),实现查找主串中子串第一次出现的位置返回值是整型;若不存在,返回-1

	string str1("123456");
	cout << str1.find("45") << endl;//find查找主串中子串出现的首位置,返回整型,表示下标,这一行输出3
	int n = str1.find("8");			//n=0xffffffff,就是-1了
	cout << n << endl;				//输出-1

1.5 其他常用操作

  1. insert(): 插入。使用insert()方法可以在string对象的指定位置插入另一个字符串。str1.insert(插入处下标,待插入子串);
  2. erase():删除。erase(num1,num2)删除从[num1,num2]区间内的字符(闭区间),如果没有num2,则删除到结尾;
  3. substr():求子串。substr(num1,num2)参数与erase()相同,两个数字,表示构造子串的区间,如果没有num2,表示到结尾;
  4. length():求字符串长度,返回整型数(size()方法可以实现同样的功能);
  5. swap():交换两个子串。str1.swap(str2)交换str1和str2;
  6. []:与C语言中字符数组类似,通过"[]"访问字符串中的字符,下标从0开始。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值