统计字符连续出现的次数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;
}