无奈最近项目用c++,屡屡遇到困难,最基本功能都没有。只能自己写,贴出来只是为了日后谁遇到,省的重写了,直接复制好了,体力活。
char* str_replace_all(char *src, const char *sub, const char *dst)
{
int len_src = strlen(src);
int len_sub = strlen(sub);
int len_dst = strlen(dst);
int len_diff = len_dst - len_sub;
int result_length = len_src;
char* start = src;
char* next = strstr(src, sub);
while (next)
{
result_length += len_diff;
next = strstr(next + 1, sub);
}
char *result = new char[result_length];
memset(result, 0, result_length);
char* p = result;
start = src;
next = strstr(start, sub);
while (next)
{
int copy_length = next - start;
memcpy(p, start, copy_length);
p += copy_length;
memcpy(p, dst, len_dst);
p += len_dst;
start = next + len_sub;
if (start > src + len_src) break;
next = strstr(start, sub);
}
if (start < src + len_src) {
memcpy(p, start, src + len_src - start);
}
return result;
}
测试代码:
int main()
{
char source[] = "abcTdefThello";
char* dst = str_replace_all(source, "T", "88");
cout << source << endl << dst;
return 0;
}