C++标准模板库——string

直接上代码:

#include<cstdio>
#include<iostream>   //cin cout 在 iostream头文件中 而不是stdio.h 
#include<string>
using namespace std;

int main(){
	string str = "abcdefg";
	
	for(int i=0;i<str.length();i++){
		printf("%c",str[i]);
	}
	printf("\n");
	
	//读入和输出整个字符串 只能用cin和cout
	string str1;
	cin>>str1;
	cout<<str1; 
	printf("\n");
	
	//printf来输出 string 需要使用c_str() 将string类型转化为字符数组进行输出
	string str2 = "hello world";
	printf("%s",str2.c_str()); 
	printf("\n");
	
	for(string::iterator it = str2.begin();it!=str2.end();it++){
		printf("%c",*it); 
	}
	
	string::iterator it = str2.begin();   //只有vector和string可以有这种写法 即迭代器可以直接加 
	for(int i=0;i<str2.length();i++){
		printf("%c",*(it+i));   
	}
	printf("\n");
	
	//string的拼接
	string str3 = str + " " +str2;  //直接相加  空格也可以直接在里面加 
	//或者
	str+=str2;
	cout<<str3<<endl; //endl表示回车 
	cout<<str<<endl; 
	
	//两个string类型的可以直接使用 == 、!=、<、<=、>、>=进行比较 按照字典序
	
	//str.length() == str.size()
	
	//表示把str2插入在str的3号位开始
	str = "abcdefg"; 
	str.insert(3,str2); 
	cout<<str<<endl;
	
	//或者
	str = "abcdefg"; 
	str.insert(str.begin()+3,str2.begin(),str2.end());
	cout<<str<<endl;
	
	//erase() 的两种删除方法与前面一致 (删除单个元素 删除一个区间的元素)
	//还有一种用法 str.erase(pos,length) pos为要删除的起始位置 length为要删除的长度
	str.erase(3,2);  //即删除he 
	cout<<str<<endl; 
	
	//clear() 清空 用法一致
	
	//返回子串 substr(pos,len)
	string str4 = "Thank you for your smile.";
	cout<<str4.substr(0,5)<<endl;
	cout<<str4.substr(14,4)<<endl;
	cout<<str4.substr(19,5)<<endl;
	
	
	//string::npos用于作为find函数失配时的返回值   
	printf("%d\n",string::npos);   //本身的值为 -1 (可以认为是unsigned_int类型的最大值) 
	
	//find()  查找到子串第一次出现的下标
	string str5 = "you";
	string str6 = "me" ;
	if(str4.find(str5)!=string::npos){
		cout<<str4.find(str5)<<endl;
	}else{
		cout<<"sorry"<<endl;
	}
	
	if(str4.find(str5,7)!=string::npos){  //表示从str5的7号位开始向后查找 
		cout<<str4.find(str5,7)<<endl;  //这时匹配到的其实是 your 
	}else{
		cout<<"sorry"<<endl;
	}
	
	if(str4.find(str6)!=string::npos){
		cout<<str4.find(str6)<<endl;
	}else{
		cout<<"sorry"<<endl;
	}
	
	//replace() 替换 
	//str.replace(pos,len,str2)  表示从pos位开始 len长度的字符串 全部换成str2
	//str.replace(it1,it2,str2)  表示把str的迭代器 [it1,it2) 的子串换成str2 
	
	cout<<str4.replace(6,3,str6)<<endl;  //空格不占长度 
	cout<<str4.replace(str4.begin(),str4.begin()+5,str6)<<endl; 
	
	return 0;
} 


运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值