C++STL中string的头文件中的常用函数

STL简介

STL是Standard Template Library的简称,中文名标准模板库,它是一些容器的集合,如string,map,vector,queue,stack等,同时它还包含了一些算法的模板函数,如algorithm。
本文介绍string头文件中的常用函数。

头文件

#include<string>

初始化操作

#include<iostream>
#include<string>
using namespace std;
int main(){
	string str1("abcdefghi");//直接赋值
	string str2(str1);//把str1复制给str2
	string str3("qwert",3);//将字符串的前3位赋给str3
	string str4(6,'6');//6个6
	string str5(str2,1,5);//从str2中从位置1开始取5个字符!!!注意0位置是a所以1位置是b
	string str6(str4,3);//复制str4的前3个字符
	cout<<"str1="<<str1<<endl;
	cout<<"str2="<<str2<<endl;
	cout<<"str3="<<str3<<endl;
	cout<<"str4="<<str4<<endl;
	cout<<"str5="<<str5<<endl;
	cout<<"str6="<<str6<<endl;
	return 0;
} 

实现效果

在这里插入图片描述

基本函数

1.size,length,capacity

str.size();//计算str的大小
str.length();//计算str的长度
str.capacity();//计算str的空间大小

size和length数值相同。
capacity由初始化时决定。
如:

str="abcdefghi";

size,length,capacity的值相等都等于9。

2.resize,reserve

resize重新设置字符串的大小。
如果str="abcdefghi";
那么str.resize(5)操作后str=="abcde"
如果超过范围可以用str.resize(15,'a')
此时str=="abcdefghiaaaaaa"
a可以换成任意字符,注意只能是单个字符
reserve重新设置字符串的空间,使用方法与resize一致。
当设置空间大小小于字符串长度时,不会进行操作。

1,2的实现代码

#include<iostream>
#include<string>

using namespace std;

string str("abcdefghi");
int a=str.size();
int b=str.length();
int c=str.capacity();

void outputstr(){
	a=str.size();
	b=str.length();
	c=str.capacity();
	cout << "str=" << str <<endl;
	cout << "str.size=" << a << endl;
	cout << "str.length=" << b << endl;
	cout << "str.capacity=" << c << endl;
}
int main(){
	cout << "初始状态:\n"; 
	outputstr();
	str.resize(7);	
	cout << "改变长度后:\n";
	outputstr();
	str.reserve(19); 
	cout << "增加空间后:\n";
	outputstr();
	return 0;
} 
实现效果

在这里插入图片描述

3.at,append,insert

at可以访问字符串某个下标的元素

str="abcdefghi";
//str.at(0)==a;
//str[0]==a;

输出时如果使用str[],当越界时输出空白。
但是使用str.at(),会提示越界。
如下图👇
在这里插入图片描述
使用append在末尾进行插入
使用方法和初始化括弧内的操作一样。

string str="abcdefghi";
string str1="ztx"; 
str.append(str1);      //将str1插入到str末尾
str.append(str1,1,2);  //将s2的从下标为1开始的两个字符插入到str末尾
str.append("ZTX"); //将ZTX插入到str末尾
str.append(3,'2');   //将3个2插入到str末尾

使用insert在指定位置进行插入

string str("abcd");
string str1("ZTX");	
str.insert(2,str1);//在下标为2的位置插入str1插入后为abcZTXd
str.insert(2,"ztx");//在下标为2的位置插入ztx插入后为abcztxZTXd

4.empty,compare,copy,find,replace

empty的使用方法

str.empty()//若str为空,返回1,否则返回0;

compare的使用方法

str.compare(str1)//比较str和str1
//如果str>str1 返回大于0
//如果str=str1 返回0
//如果str<str1 返回小与0
//比较方法为从头开始依次比较,按照ASCII进行比较

copy的使用方法

 string str("abcdefghi);
 char str1[99];
 str.copy(str1,6,0)
 //str中从0开始的6个字符复制给字符数组str1

find的使用方法

 string str("abcdefghi");
 string str1("ghi");
 cout<< str.find('i') <<endl;  //查询是否有i返回下标
 cout<< str.find("abc") <<endl; //查询是否有abc返回a的下标
 cout<< str.find(str1,0) <<endl;//从0开始查询是否有str1返回下标

repace的使用方法

string str("Good morning!");
string str("afternoon");
str.replace(5,7,str1);
cout<<"str="<<str<<endl;

结果输出Good afternoon!

5.substr,swap,erase,assign

substr的使用方法

string str("Good morning!");
	cout<<str.substr(3,6)<<endl;

结果输出d morn
即函数返回字符串中从下标3开始6个字符。
swap的使用方法

	string str("Good morning!");
	string str1("Good afternoon!");
	str.swap(str1);//当然使用swap(str,str1)效果相同
	cout<<"str="<<str<<endl;
	cout<<"str1="<<str1<<endl;

结果显而易见str与str1交换。
erase的使用方法

	string str("Good morning!");
	str.erase(0,5);//删除从下标0开始的5个字符
	cout<<"str="<<str<<endl;

输出结果为morning!
assign的使用方法
assign用于赋值。
初始化时赋值运算符=,相当于对assign的一个简单包装,效果相同,在初始化之后,是用assign对字符串进行重新赋值。

	string str1("Good afternoon!");
	string str("Good morning!");
	str.assign(str1);//将str1赋值给str
	cout << str << endl;	
	str.assign("abcdef",4);//取所给字符串中的前4个字符
	cout << str << endl;
	str.assign(str1,8,2);//取str1中的下标为8开始的2个字符
	cout << str << endl;
	str.assign(3,'a');//取3个a
	cout << str << endl;

其实和初始化差不多,只是多了.assign而已。
在这里插入图片描述

  • 13
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值