STL string

常用函数说明:

 定义:string str="abcd";

输出:循环  printf("%c",str[i]); 

          可以使用迭代器:

     for(string::iterator it=str.begin();it!=str.end();it++){
        printf("%c",*it);
    } 

读入和输出整个字符串只能用cin和cout

拼接string: str2=str+str1;      str1+=str;

比较:两个string类型可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是字典序

字符数:length()/size() 返回string的长度,即存放的字符数

插入:

(1)insert(pos,string) 在pos号位置插入字符串string str.insert(2,str1);//在str[2]处插入str1

(2)inster(it,it2,it3)  it原字符串,要插入字符的首尾  s1.insert(s1.begin()+1,str1.begin(),str1.end()) ;

删除:erase 删除单个元素 删除区间元素

(1)s1.erase(s1.begin()+2);

(2)s1.erase(s1.begin()+2,s1.end()-1);

(3)s1.erase(pos,length)函数   s1.erase(1,2);

截取子串:substr(pos,len)返回从pos位开始、长度为len的子串  ss.substr(0,5)

string::npos 常数,本身为-1,但由于unsigned_int类型,可以看做此类型的最大值。
string::npos作为find函数失配时的返回值 

寻找子串:ss.find(ss1)返回子串在原串第一次出现的位置

替换:ss.replace(pos,len,str)str从pos号位开始,长度为len的子串替换为str    t.replace(10,4,t1)

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(){
	string str,str1,str2,str3;
	str="abcd";
	printf("str=:");
	for(int i=0;i<str.length();i++){
		printf("%c",str[i]);
	}
	printf("\n");
	//用c_str将string类型转化为字符数组输出
	printf("str.c_str()函数:str=%s\n",str.c_str()); 
	//读入和输出整个字符串只能用cin和cout
	//有时函数以迭代器为参数
	//string::iterator it;
	printf("使用迭代器访问:str="); 
	for(string::iterator it=str.begin();it!=str.end();it++){
		printf("%c",*it);
	} 
	printf("\n");
	cin>>str1; 
	cout<<"输出str="<<str1<<endl;
	//拼接string
	str2=str+str1;//有顺序 
	str3=str1+str;
	str1+=str;
	cout<<"str1+=str: "<<str1<<endl;
	cout<<"str2=str+str1: "<<str2<<endl;
	cout<<"str3=str1+str: "<<str3<<endl;
    //两个string类型可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是字典序
	string s1="aa",s2="aaa",s3="abc",s4="xyz";
	cout<<"s1= "<<s1<<endl; 
	if(s1<s2) printf("OK1!\n");
	if(s1!=s3) printf("OK2!\n");
	if(s4>=s3) printf("OK3!\n");
	//length()/size() 返回string的长度,即存放的字符数
	printf("str存放的字符数:%d %d\n",str.length(),str.size());	 
	//插入 insert(pos,string) 在pos号位置插入字符串string
	str.insert(2,str1);//在str[2]处插入str1
	cout<<"str.inster(2,str1):str="<<str<<endl; 
	//inster(it,it2,it3)it原字符串,要插入字符的首尾
	//s1.begin()+1 一定不能越界 
	s1.insert(s1.begin()+1,str1.begin(),str1.end()) ;
	cout<<"s1="<<s1<<endl; 
	//erase 删除单个元素 删除区间元素
	s1.erase(s1.begin()+2);
	cout<<"s1.erase(s1.begin()+2)后:s1= "<<s1<<endl; 
	s1.erase(s1.begin()+2,s1.end()-1);
	cout<<"erase(s1.begin()+2,s1.end()-1)后:s1="<<s1<<endl; 
	s1.erase(1,2);
	cout<<"使用s1.erase(pos,length)函数:s1="<<s1<<endl; 
	string ss="Thank you for your smile.";
	cout<<"ss="<<ss<<endl;
	//substr(pos,len)返回从pos位开始、长度为len的子串
	cout<<"substr(0,5):"<<ss.substr(0,5)<<endl;
	cout<<"substr(6,3):"<<ss.substr(6,3)<<endl;
	cout<<"substr(10,3):"<<ss.substr(10,3)<<endl;
	cout<<"substr(14,4):"<<ss.substr(14,4)<<endl;
	cout<<"substr(19,5):"<<ss.substr(19,5)<<endl;
	/*string::npos 常数,本身为-1,但由于unsigned_int类型,可以看做此类型的最大值。
	string::npos作为find函数失配时的返回值  
	*/ 
	if(string::npos==-1){
		cout<<"string::npos==-1 is ture."<<endl;
	} 
	if(string::npos==4294967295){
		cout<<"string::npos==4294967295 is ture."<<endl;
	} 
	//寻找子串,返回子串在原串第一次出现的位置
	string ss1="you";
	printf("you在ss中第一次出现的位置:%d\n",ss.find(ss1));
	//法二:  ss.find(ss1,pos) 从pos的位置开始查找
	printf("you在ss中第一次出现的位置:%d\n",ss.find(ss1,7));
	//ss.replace(pos,len,str) 把str从pos号位开始,长度为len的子串替换为str
	string t="Maybe you will turn around.";
	string t1="will not";
	string t2="surely";
	cout<<t.replace(10,4,t1)<<endl;
	cout<<t.replace(t.begin(),t.begin()+5,t2)<<endl;
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Clark-dj

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

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

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

打赏作者

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

抵扣说明:

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

余额充值