ACM--string常见用法

时间:2023-03-09 15:48:29
ACM--string常见用法

在ACM竞赛中,常常需要将读入的数字的每位分离出来,如果采用取余的方法,花
费的时间就会太长,这时候,我们可以将读入的数据当成字符串来处理,这样就方便、省
时多了。下面这个程序演示了求一个整数各位的和:

#include <string>
#include <iostream>
using namespace std;
int main(){
string s = "";
int sum = ;
for(int i = ;i<s.length();i++){
switch(s[i]){
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
case '':sum+=;break;
}
}
cout << sum;
}

sscanf函数很管用,它可以把一个字符串按你需要的方式分离出子串,
甚至是数字。下面这个程序演示了sscanf函数的具体用法:

#include <iostream>
#include <string>
using namespace std;
int main(){
char a[],b[],c[];
sscanf("122 3ss 3ww","%s %s %s",a,b,c);
string s = a;
cout << s <<endl;
int p,l,k;
sscanf("122 $122$333","%d $%d$%d",&p,&l,&k);
cout << p <<endl;
cout << l <<endl; }

有时候,string 对象与数值之间需要相互转换,下面这个例子详细说明了如何完成这
项工作:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
//C++方法:将数值转换为string
string convertToString(double x)
{
ostringstream o;
if (o << x)
return o.str();
return "conversion error";//if error
}
//C++方法:将string转换为数值
double convertFromString(const string &s)
{
istringstream i(s);
double x;
if (i >> x)
return x;
return 0.0;//if error
}
int main(int argc, char* argv[])
{
//将数值转换为string的第一种方法:C方法
char b[];
string a;
sprintf(b,"%d",);
a=b;
cout<<a<<endl;
//将数值转换为string的第二种方法:C++方法
string cc=convertToString();
cout<<cc<<endl;
//将string转换为数值的方法:C++方法
string dd="";
int p=convertFromString(dd)+;
cout<<p<<endl;
return ;
}