接着string上,接着说string剩下的部分。
*string对象的比较
string对象可以使用compare()方法与其他字符串想比较。假设字符串A和B,A如果比B大,则返回1,如果A比B小,则返回-1,如果A和B相同,则返回0
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s = "cat dog cat";
//s比"cat"字符串大,返回1
cout<<s.compare("cat dog")<<endl;
//s与"cat dog cat"一样,返回0
cout<<s.compare("cat dog cat")<<endl;
//s比"dog"字符串小,返回-1
cout<<s.compare("dog")<<endl;
return 0;
}
*string对象作为vector元素
类似于字符串数组
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<string> v;
v.push_back("CaiCai");
v.push_back("At");
v.push_back("Ningbo");
cout<<v[0]<<endl;
cout<<v[1]<<endl;
cout<<v[0][0]<<endl;
cout<<v[1][1]<<endl;
cout<<v[2].length()<<endl;
return 0;
}
*string对象的数字化处理
一些string是纯数字的,高精度的数据,需要把每位分离出来,我们可以把高精度数据当做字符串处理
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s = "1234059";
int i, sum = 0;
for(i = 0; i < s.length(); i ++)
{
if(s[i] == '0')
sum += 0;
else if(s[i] == '1')
sum += 1;
else if(s[i] == '2')
sum += 2;
else if(s[i] == '3')
sum += 3;
else if(s[i] == '4')
sum += 4;
else if(s[i] == '5')
sum += 5;
else if(s[i] == '6')
sum += 6;
else if(s[i] == '7')
sum += 7;
else if(s[i] == '8')
sum += 8;
else if(s[i] == '9')
sum += 9;
}
cout<<sum<<endl;
return 0;
}
*string对象与字符数组的相互操作
下面这段代码来说明string与字符数组的相互转化和区别
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
string s;
char ss[100];
//输入字符串到字符数组中
scanf("%s", &ss);
//字符数组赋值给字符串对象
s = ss;
//用printf输出字符串对象,要采用c_str()方法
printf(s.c_str());
cout<<endl;
//用printf输出字符数组
printf("%s", ss);
cout<<endl;
cout<<s<<endl;
cout<<ss<<endl;
return 0;
}
*string对象与sscanf函数
sscanf()很有用,可以把一个字符串按照你需要的方式分离成你想要的子串,
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int main()
{
string s1, s2, s3;
char sa[100], sb[100], sc[100];
//将字符串分离成子串,分隔符为空格
sscanf("abc 123 pc", "%s %s %s", sa, sb, sc);
s1 = sa;
s2 = sb;
s3 = sc;
cout<<s1<<" "<<" "<<s2<<" "<<s3<<endl;
//将字符串分离成数字,分隔符为空格
int a, b, c;
sscanf("123 456 789", "%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;
return 0;
}
*string对象与数值相互转换
string对象与数值之间需要相互转换
#include<iostream>
#include<string>
#include<sstream>
#include<stdio.h>
using namespace std;
//c++方法:将数值转换为string
string convertToString(double x)
{
ostringstream O;
if(O << x)
return O.str();
return "conversion error";
}
//c++方法:将string转换成数值
double convertFromString(const string& s)
{
istringstream i(s);
double x;
if(i >> x)
return x;
return 0.0;
}
int main()
{
char b[10];
string a;
sprintf(b, "%d", 1975);
a = b;
cout<<a<<endl;
//将数值转换成string的第二种方法:C++方法
string cc = convertToString(1976);
cout<<cc<<endl;
//将string转换为数值的方法:C++方法
string dd = "2015";
int p = convertFromString(dd) + 2;
cout<<p<<endl;
return 0;
}