字符串的替换有关问题 求大神帮忙改一下
字符串的替换问题 求大神帮忙改一下
总是出现乱码T T
------解决方案--------------------
char * ReplaceCharInString( char * Pstr1, char src, char * Pstr2 )
{
int n=0,j=0,k=0;
for(int i=0;i<=strlen(Pstr1);i++)
if(Pstr1[i]==src) n++;
int finallen=strlen(Pstr1)-n+n*strlen(Pstr2);
char *restr=new char[finallen+1];
memset(restr, 0, sizeof(restr[0])*(finallen+1)); // 这里长度要+1
for(int i=0,k=0;i<finallen;i++)
{
if(Pstr1[k]!=src) restr[i]=Pstr1[k]; //当进入else再次进入if后,这里有问题,因为i的下表已经对Pstr1无效了
else
{
for(j=0;j<strlen(Pstr2);j++,i++)
{
restr[i]=Pstr2[j];
}
i--; // 要减回来
}
k++;
}
return restr;
}
细节啥的,自己调试以下就好了。
总是出现乱码T T
#include<iostream>
#include<cstring>
using namespace std;
char * ReplaceCharInString( char * Pstr1, char src, char * Pstr2 )
{
int n=0,j=0,k=0;
for(int i=0;i<=strlen(Pstr1);i++)
if(Pstr1[i]==src) n++;
int finallen=strlen(Pstr1)-n+n*strlen(Pstr2);
char *restr=new char[finallen];
for(int i=0;i<finallen;i++)
{
if(Pstr1[i]!=src) restr[i]=Pstr1[i];
else
for(j=0;j<strlen(Pstr2);j++,i++)
restr[i]=Pstr2[j];
}
return restr;
}
int main()
{
char * string1 = "aaabbbccc";
char ch = 'b';
char * string2 = "INS";
char * p = ReplaceCharInString( string1, ch, string2 );
cout << p << endl;
SAFE_DELETES(p);
char pStr1[] = " abcb !";
p = ReplaceCharInString( string1, 'a', "hello" );
cout << p << endl;
SAFE_DELETES(p);
system("pause");
return 0;
}
------解决方案--------------------
char * ReplaceCharInString( char * Pstr1, char src, char * Pstr2 )
{
int n=0,j=0,k=0;
for(int i=0;i<=strlen(Pstr1);i++)
if(Pstr1[i]==src) n++;
int finallen=strlen(Pstr1)-n+n*strlen(Pstr2);
char *restr=new char[finallen+1];
memset(restr, 0, sizeof(restr[0])*(finallen+1)); // 这里长度要+1
for(int i=0,k=0;i<finallen;i++)
{
if(Pstr1[k]!=src) restr[i]=Pstr1[k]; //当进入else再次进入if后,这里有问题,因为i的下表已经对Pstr1无效了
else
{
for(j=0;j<strlen(Pstr2);j++,i++)
{
restr[i]=Pstr2[j];
}
i--; // 要减回来
}
k++;
}
return restr;
}
细节啥的,自己调试以下就好了。