现在的位置: 首页 > 综合 > 正文

字符串替换(新开辟空间)

2013年12月02日 ⁄ 综合 ⁄ 共 648字 ⁄ 字号 评论关闭

 #include <iostream>

#include <string.h>

using
namespace std;

char* replace_my(char* str,
char c,
const char* rc)
// 调用函数前,保证str能展开空间

{ char* ret
= str;

char* cp
= str; size_t cnt
= 0;

 int rcsize
= (int)strlen(rc);

while (*cp) {
if (*cp
== c)

 cnt++;
// 统计找到 c 的次数
++cp;

 }

if (cnt
<= 0)
// 没找到 c

return ret; cp
= str;

int bufsize
= strlen(str)
+ rcsize * cnt
+ 1;

 char
* buf
= new
char[bufsize];
// 建立缓冲区buf

char * ps
= buf;
while (*cp) {
*ps
= *cp;

if (*cp
== c) {
// 替换字符 c 为字符串 rc

memcpy(ps, rc, rcsize); ps += (rcsize-1);

}

++cp;

++ps; }

*ps =
'\0';
// 封闭缓冲区buf

strcpy(str , buf); delete[] buf;

return ret;}

int main()

{ char str[1024];

strcpy(str, "abcdefgabcdefgcccac");

cout << str
<< endl; replace_my(str,
'c',
" <cccccccccccccccccccccccc>
");

cout << str
<< endl
<< endl;

return 0;}

抱歉!评论已关闭.