问题描述:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。
要求实现函数
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
[输入] str: 输入的被操作字符串
str_sub: 需要查找并删除的特定子字符串
[输出] result_str: 在str字符串中删除所有sub_str子字符串后的结果
[返回] 删除字符串的个数
=============================我自己的实现(能力有限,仅供参考)=============================
#include <iostream>
using namespace std;
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
int orig_len = strlen(str);
int sub_len = strlen(sub_str);
if( sub_len > orig_len )
{
strcpy(result_str, str);
return 0;
}
const char *pSrc=str, *pSub=sub_str;
char *pDst = result_str;
int sub_str_num = 0;
while( *pSrc != 0 )
{
pSub = sub_str;
const char *pTmp = pSrc;
while( *pTmp == *pSub )
{
pTmp++;
pSub++;
if( *pSub == 0 )
break;
}
if( *pSub != 0 ) // don't find sub_str
*pDst++ = *pSrc++;
else{ // find sub_str
pSrc = pTmp;
++sub_str_num;
}
}
*pDst = 0;
return sub_str_num;
}
void main()
{
const char *src = "abcabxxcabc";//xxabcabde123abc1
const char *sub = "abc";
char *result = new char[strlen(src)+1];
int sub_num = delete_sub_str(src, sub, result);
cout<<"after deleting: "<<result<<endl;
cout<<"number of sub string: "<<sub_num<<endl;
delete [] result;
}