有如下字符串:
char* s = "abcdefxy"
我想把其中的"bc"替换成'h',也就是s最终变成"ahdefxy"
如何做?谢谢大家

解决方案 »

  1.   

    char *p ="abcdefg";
    CString str;
    str.Format ("%s",p);
    str.Replace ("bc","h");
      

  2.   


    CString str("abcdefxy");
    str.Replace("bc","h");
      

  3.   

    char* s = "abcdefg";
    CString str = s;
    str.Replace("bc","h");
      

  4.   

    一楼的方法已经解决问题了,不过最后是保存在CString的str 中,
    如果你想重新变回s,可以:
    char *s ="abcdefg";
    CString str;
    str.Format ("%s",s);
    str.Replace ("bc","h");s=str.GetBuffer(str.GetLength());//这里将值反赋给s,这样s就变回你想要的了
      

  5.   

    #include <stdio.h>#include <string.h>int main()
    { char s[] = "abcbcbcbcdsbcvbvbc"; //源字符串
    for(int i = 0 ; i < strlen(s) ; i++)
    {
    if(s[i]=='b'&&s[i+1]=='c')
    {
    s[i] = 'h';
    for(int j = i+1 ;j<strlen(s);j++)
    s[j] = s[j+1];
    }
    }
    printf("s= %s\n",s); //改变后的字符串
    return 0;
    }
      

  6.   

    char* s = "abcdefxy";
    CString str; 
    str.Format("%s", s);
    str.Replace("bc", "h");ok
      

  7.   

    我想楼主可能需要的是不用CString的解决办法
      

  8.   

    dui 同意楼上。
    那就用c的 string的函数 有很多呢。问楼主:
    你是要做普遍性的替换 还是就针对你的这个问题?
      

  9.   

    谢谢大家的帮助,不好意思,没说清楚
    我希望替换指定位置的一个或几个字符
    如果用replace()会替换全部,比如 char *s = "adsfff",我用"t"替换"f", replace()后变成了 "adsttt",这不是我所期望的
    to: beyondtkl(大龙驹宣言:抵制日货,从我做起) 
    当然我希望是普遍性的替换
      

  10.   

    CString str = "sasttt ss";
    int l = str.Find("st",0); //找到第一个替换内容
    str.Delete(l,2);          //"st"为2字节
    str.Insert(l,"new char");
      

  11.   

    自已做一个函数,返回值为替换后得到的字串,四个参数依次为,从第几个开始(基于0),换几个,源串,要替换的串。
    CString MyReplace(int nNo,int nNum,char* nStr1,char*nStr2)
    {
        CString retu_str;//返回值    CString temp1 = nStr1;//原串
        CString temp2 = nStr2;//要替换的串
        
        temp1 = temp1.Delete(nNo,nNum);
        temp1 = temp1.Insert(nNo,temp2);
        retu_str = temp1;    return retu_str;
    }