提问:一个字符串替换问题 有如下字符串:char* s = "abcdefxy"我想把其中的"bc"替换成'h',也就是s最终变成"ahdefxy"如何做?谢谢大家 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char *p ="abcdefg";CString str;str.Format ("%s",p);str.Replace ("bc","h"); CString str("abcdefxy");str.Replace("bc","h"); char* s = "abcdefg";CString str = s;str.Replace("bc","h"); 一楼的方法已经解决问题了,不过最后是保存在CString的str 中,如果你想重新变回s,可以:char *s ="abcdefg";CString str;str.Format ("%s",s);str.Replace ("bc","h");s=str.GetBuffer(str.GetLength());//这里将值反赋给s,这样s就变回你想要的了 #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;} char* s = "abcdefxy";CString str; str.Format("%s", s);str.Replace("bc", "h");ok 我想楼主可能需要的是不用CString的解决办法 dui 同意楼上。那就用c的 string的函数 有很多呢。问楼主:你是要做普遍性的替换 还是就针对你的这个问题? 谢谢大家的帮助,不好意思,没说清楚我希望替换指定位置的一个或几个字符如果用replace()会替换全部,比如 char *s = "adsfff",我用"t"替换"f", replace()后变成了 "adsttt",这不是我所期望的to: beyondtkl(大龙驹宣言:抵制日货,从我做起) 当然我希望是普遍性的替换 CString str = "sasttt ss";int l = str.Find("st",0); //找到第一个替换内容str.Delete(l,2); //"st"为2字节str.Insert(l,"new char"); 自已做一个函数,返回值为替换后得到的字串,四个参数依次为,从第几个开始(基于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;} 关于MSVCR90.DLL的问题 在一个界面函数中访问另一个界面函数的变量 可以通过它的模块句柄或进程句柄获得正在运行程序的图标吗? 在模式对话框中如何实现按下OK按钮不关闭窗口,像 apply 按钮那样。 创建文件的问题 关于游戏内存修改的,麻烦各位帮一下忙,在线急等,实在没办法哒!!!!!!!!!!!!!!! FlushConsoleInputBuffer()函数如何能清空控制台输入? 大家帮忙啊? 救命啊~ InternetReadFile的问题,十万火急! 如何打开dll文件并编辑之(菜鸟问) 有关菜单操作的问题? 如果判断指定窗口中的控件? 控制台程序怎样不要那个dos窗口?
CString str;
str.Format ("%s",p);
str.Replace ("bc","h");
CString str("abcdefxy");
str.Replace("bc","h");
CString str = s;
str.Replace("bc","h");
如果你想重新变回s,可以:
char *s ="abcdefg";
CString str;
str.Format ("%s",s);
str.Replace ("bc","h");s=str.GetBuffer(str.GetLength());//这里将值反赋给s,这样s就变回你想要的了
{ 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;
}
CString str;
str.Format("%s", s);
str.Replace("bc", "h");ok
那就用c的 string的函数 有很多呢。问楼主:
你是要做普遍性的替换 还是就针对你的这个问题?
我希望替换指定位置的一个或几个字符
如果用replace()会替换全部,比如 char *s = "adsfff",我用"t"替换"f", replace()后变成了 "adsttt",这不是我所期望的
to: beyondtkl(大龙驹宣言:抵制日货,从我做起)
当然我希望是普遍性的替换
int l = str.Find("st",0); //找到第一个替换内容
str.Delete(l,2); //"st"为2字节
str.Insert(l,"new char");
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;
}