如:1122333变为122233,将字符串转换为字符+字符连续出现的次数

来源:互联网 发布:骨灰盒尺寸数据 编辑:程序博客网 时间:2024/05/16 07:35

统计字符连续出现的次数cont,然后将该字符和cont写入字符串中,使用两种方法实现,一种是普通方法,将cont转化为字符串,将字符转化为字符串,然后使用strcat将两者分别连接到字符串后面。另一种使用sprintf打印数字或符号到字符串的方法,比较方便。

#include<string>#include<iostream>#include<string.h>#include<stdio.h>using namespace std;char *ctos(char c);char *itoc(int num);int main(){    string str;    char *p=new char[50],*temp=new char[2];    *p='\0';    getline(cin,str);    int cont=1,i=0;    while(str[i])    {        if(str[i]==str[i+1])        {            cont++;        }        else        {//       方法一:将数字转化为字符,再写入到字符串中。//            strcpy(temp,ctos(str[i]));//            strcat(p,temp);//            strcpy(temp,itoc(cont));//            strcat(p,temp);//            cont=1;//      方法二:使用sprintf函数              sprintf(p+strlen(p),"%c%d",str[i],cont);//将str[i]和cont打印到以char指针指向的地址开头的空间中。              cont=1;        }        i++;    }    cout<<p<<endl;}char *ctos(char c){    char *p=new char[2];    *p=c;    *(p+1)='\0';    return p;}char *itoc(int num){   int n=0,m=0;    char *p=new char[11];    char *h=p,temp;    while(num>0)    {        *p=num%10+'0';        num=num/10;        n++;        p++;    }    *p='\0';    n=n-1;    while(m<n)    {        temp=h[m];        h[m]=h[n];        h[n]=temp;        n--;        m++;    }    return h;}


原创粉丝点击