16,470
社区成员
发帖
与我相关
我的任务
分享
char str[2048] = "hello the world world world";
char temp[2048];
memset(temp, 0, 2048);
test(str, temp, "world", "china!!!");
strcpy(str, temp);
MessageBox(str);
void CMy001Dlg::test(char *str, char *buffer, const char *oldpart, const char *newpart)
{
const int size = strlen(oldpart);
int pos1=0, pos2=0;
char *pch = strstr(str, oldpart);
pos1 = pch - str;
pos2 = pos1 + size;
char *temp = str + pos2; //±£´æµÚÈý¶ÎµÄµØÖ·
str[pos1] = 0; //½«str½ØΪµÚÒ»¶Î
strcat(buffer, str);
strcat(buffer, newpart);
ASSERT(strlen(buffer) < 2048);
str = temp;
if(strlen(str) > 0)
{
test(str, buffer, oldpart, newpart);
}
}
strcat(temp,str+pos1);
return temp; //返回temp
//strcpy(str, temp);
//return str;
void strReplace(char *str, const char *oldpart, const char *newpart)
{
char temp[1024];
char *p = strstr(str, oldpart);
while( p != NULL )
{
memset(temp, '\0', sizeof(temp));
// 提取oldpart后面的字符串,装入temp中
strcpy(temp, p+sizeof(oldpart));
// oldpart前面的字符串替换
*(p + 1) = '\0';
strcpy(str, newpart);
// 合并成此次替换好的字符串
strcpy(str, temp);
// 寻找下一次的位置
p = strstr(str, oldpart);
}
}
//////////////////////////////////////////////////////////////////////////
/// 在指定字符串中替换指定字符串为指定字符串
//////////////////////////////////////////////////////////////////////////
std::string ReplaceString(std::string strSrc,std::string strPos,std::string strStr)
{
std::string::iterator IterL;
std::string::size_type indexCh1a = 0;
std::string::size_type off = 0;
std::string result6a = strSrc;
if (strPos.empty())
{
return strSrc;
}
while((indexCh1a = strSrc.find (strPos,off)) != std::string::npos)
{
IterL = strSrc.begin ( ) + indexCh1a;
off = indexCh1a + strStr.size();
result6a = strSrc.replace ( IterL , IterL+strPos.size() , strStr );
}
return result6a;
}
// 使用
// 记得包含头文件#include <string>
std::string strSrc = "hello the world";
std::string strPos = "world";
std::string strStr = "china";
strSrc = ReplaceString(strSrc , strPos, strStr);
// strSrc就是你要的.
void strReplace1(char* str, const char* oldpart, const char* newpart)
{
char *p = strstr(str, oldpart);
*(p+1) = '\0';
strcat(str, newpart);
}