STL——string容器

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<sstream>
using namespace std;
/*将数值转换为string*/
string convertToString(double x){
	ostringstream o;
	if(o<<x)
		return o.str();
	return "conversion error";
} 
/*string转换为数值*/
double convertFromString(const string &s){
	istringstream i(s);
	double x;
	if(i>>x)
		return x;
	return 0.0;
} 
int main()
{
	/*创建string对象*/
	string s;
	cout<<s.length()<<endl;
	
	/*给string对象赋值*/
	string s1;
	s1="hello,C++STL.";
	cout<<s1<<endl;
	
	/*把字符指针赋给一个字符串对象*/
	string s2;
	char ss[5000];
	scanf("%s",&ss);
	s2=ss;
	cout<<s2<<endl;
	
	/*从string对象尾部添加字符*/
	string s3;
	s3=s3+'a';
	s3=s3+'b';
	s3=s3+'c';
	cout<<s3<<endl;
	
	/*从string对象尾部追加字符串*/
	string s4;
	s4=s4+"abc";
	s4=s4+"123";
	cout<<s4<<endl;
	
	/*采用append()方法*/
	string s5;
	s5.append("abcd");
	s5.append("1234");
	cout<<s5<<endl; 
	
	/*给string对象插入字符*/
	string s6;
	s6="123456";
	string::iterator it;
	it=s6.begin();
	s6.insert(it+1,'p');
	cout<<s6<<endl; 
	
	/*访问string对象的元素*/
	cout<<s6[0]<<endl;
	cout<<s6[1]-'p'<<endl; 
	
	/*删除string对象的元素*/
	string::iterator it1=s6.begin();
	s6.erase(it1+3);
	cout<<s6<<endl;
	s6.erase(it1,it1+4);
	cout<<s6<<endl;
	s6="";
	cout<<s6.length()<<endl; 
	
	/*替换string对象的字符*/
	string s7="abc123456";
	s7.replace(3,3,"good");
	cout<<s7<<endl; 
	
	/*搜索string对象的元素或子串*/
	string s8;
	s8="cat dog cat";
	cout<<s8.find('c')<<endl;
	cout<<s8.find("c")<<endl;
	cout<<s8.find("cat")<<endl;
	cout<<s8.find("dog")<<endl;
	cout<<s8.find("dogc")<<endl;
	
	/*string对象的比较*/
	cout<<s8.compare("cat")<<endl;
	cout<<s8.compare("cat dog cat")<<endl;
	cout<<s8.compare("dog")<<endl; 
	
	/*reverse()反向排序string对象*/
	string s9="123456789";
	reverse(s9.begin(),s9.end());
	cout<<s9<<endl; 
	
	/*string对象作为vector元素*/
	vector<string> v;
	v.push_back("Jack");
	v.push_back("Mike");
	v.push_back("Tom");
	cout<<v[0]<<endl;
	cout<<v[1]<<endl;
	cout<<v[2]<<endl;
	cout<<v[0][0]<<endl;
	cout<<v[1][0]<<endl;
	cout<<v[2].length()<<endl;
	
	/*string类型的数字化处理*/
	string s10;
	s10="123456789";
	int i;
	int sum=0;
	for(i=0;i<s10.length();i++){
		if(s10[i]=='0')
			sum+=0;
		else if(s10[i]=='1')
			sum+=1;
		else if(s10[i]=='2')
			sum+=2;
		else if(s10[i]=='3')
			sum+=3;
		else if(s10[i]=='4')
			sum+=4;
		else if(s10[i]=='5')
			sum+=5;
		else if(s10[i]=='6')
			sum+=6;
		else if(s10[i]=='7')
			sum+=7;
		else if(s10[i]=='8')
			sum+=8;
		else if(s10[i]=='9')
			sum+=9;
	} 
	cout<<sum<<endl;
	
	/*string对象与字符数组互操作*/
	string s11;
	char sss[100];
	scanf("%s",&sss);
	s11=sss;
	printf(s11.c_str());
	cout<<endl;
	printf("%s",sss);
	cout<<endl;
	cout<<s11<<endl;
	cout<<sss<<endl;
	
	/*string对象与sscanf函数*/
	string s12,s13,s14;
	char sa[100],sb[100],sc[100];
	sscanf("abc 123 pc","%s %s %s",sa,sb,sc);
	s12=sa;
	s13=sb;
	s14=sc;
	cout<<s12<<" "<<s13<<" "<<s14<<endl;
	int a,b,c;
	sscanf("1 2 3","%d %d %d",&a,&b,&c);
	cout<<a<<" "<<b<<" "<<c<<endl;
	int x,y,z;
	sscanf("4,5$6","%d,%d$%d",&x,&y,&z);
	cout<<x<<" "<<y<<" "<<z<<endl;
	
	/*string对象与数值相互转换*/
	char bb[10];
	string aa;
	sprintf(bb,"%d",1975);
	aa=bb;
	cout<<aa<<endl;
	string cc=convertToString(1976);
	cout<<cc<<endl;
	string dd="2006";
	int p=convertFromString(dd)+2;
	cout<<p<<endl;
	return 0;
}
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值