string常见用法

string类型是对字符串常见的需求功能进行封装,使得操作起来更加方便,且不易出错。如果使用string需要增加string文件

  • string的定义
string str;

初始化

string str="abcd";
  • string中内容的访问
    通过下标(像字符数组那样)
#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str="abcd";
	for(int i=0;i<str.length();i++)
	{
		printf("%c",str[i]);
	}
	return 0;
}
//输出结果:abcd

若要读入和输出整个字符串,则只能使用cin和cout

#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str;
	cin>>str;
	cout<<str;
	return 0;
}

但是如果用c_str将string类型转换为字符数组进行输出也是可以使用printf来输出string的

#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str="abcd";
	printf("%s\n",str.c_str());//将string类型str使用c_str()转换为字符数组
	return 0;
}
//输出结果是abcd
  • 通过迭代器访问
    有些函数例如insert()与erase()要求以迭代器为参数
    可以直接定义
string::iterator it;

得到迭代器it,可以通过*it访问

#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str="abcd";
	for(string::iterator it=str.begin();it!=str.end();it++)
	{
		printf("%c",*it);
	}
	return 0;
}
//输出结果:abcd

常用函数

  • operator+=,即string的加法
#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str1="abc",str2="xyz",str3;
	str3=str1+str2;
	str1+=str2;//将str2直接拼凑到str1上
	cout<<str1<<endl;
	cout<<str3<<endl;
	return 0;
}
//输出abcxyz
//abcxyz
  • compare operator
    两个string类型可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是字典序
#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str1="aa",str2="aaa",str3="abc",str4="xyz";
	if(str1<str2) printf("ok1\n");
	if(str2!=str1) printf("ok2\n");
	if(str4>=str3) printf("ok3\n");
	return 0;
}
//输出ok1
//ok2
//ok3
  • length()/size()
    length()返回string的长度,即存放的字符数,时间复杂度为O(1)
    size()与length()基本相同
string str="abcxyz";
printf("%d %d\n",str.length(),str.size());
//输出6 6
  • insert()
    insert(pos,string),在pos号位置插入字符串string
string str="abcxyz",str2="opq";
str.insert(3,str2);
cout<<str<<endl;
//输出abcopqxyz

insert(it,it2,it3),it为原来的欲插入位置,it2和it3为待插入字符串的首尾迭代器,用来表示串[it2,it3)将被插在it的位置上

#include<cstdio>
#include<string>
using namespace std;
int main()
{
	string str="absxyz",str2="opq";
	str.insert(str.begin()+3,str2.begin(),str.end());
	//在str的3号位即c和x之间插入str2
	cout<<str<<endl;
	return 0;
}

**erase()**删除单个元素或者区间内元素,**clear()**清空数据这些作用与其他模板用法相同

  • substr(),substr(pos,len)返回从pos位开始,长度为len的子串,时间复杂度为O(len)
    -find(),当str2为str的子串时,str.find(str2)返回str中第一次出现的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值