http://acm.hdu.edu.cn/showproblem.php?pid=1020&&encoding

来源:互联网 发布:windows 10 c盘大小 编辑:程序博客网 时间:2024/06/09 19:54

一道字符串处理的题~

#include<iostream>#include<string.h>#include<string>#include<sstream>using namespace std;int main(){int n;cin>>n;while(n--){string s;cin>>s;int m=s.size();string s1="";//char b[20];for(int i=0;i<m;){char ch=s[i];int a=1;for(int j=i+1;j<m;j++){if(s[j]==ch) a++;else break;}if(a>1){string s2="";stringstream ss;ss<<a;ss>>s2;//memset(b,'\0',sizeof(b));    //sprintf(b,"%d",a);        //s2=b;        s1+=s2;     } s1+=ch; i+=a;}cout<<s1<<endl;    }return 0;}

小结:

1>将int,double类型转化为字符串类型:

c语言:

char buf[];

int a;

double a;//精确到小数点后六位

sprintf(buff,"%d",a);<stdio.h>

c++:

stringstream ss;<sstream>

string s;

int a;

double a;//只能保留小数点后五位

ss<<a;

ss>>s;

2>将string类型转化为int,float类型:

string str("1234.1");
const char *p;

char *a;
p = str.c_str();<string.h>
float n = atof(p);//只能保留到小数点的后两位。
int n=atoi(p);<stdio.h>

strtod(p,&endptr)//p为要被转化的字符串,endptr指向停止转换的字符串,精确到小数点的后五位,头文件<stdlib.h>.





原创粉丝点击