小议CString类中的BUG 是你自己的bug罢了要知道 字符串 是以0为结束符的.在tmp.Replace("B", 0);时, tmp已经变成了A0CA0C,这样在printf tmp 时,它可不会管你的string到底有多长,一律以0为结束符 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 非也,如果你想完成这样的操作:截去字符串str中"B"以后的所有字符,你可以这样写:str.Replace("B", 0);但不能这样写str.Replace('B', 0);因为第二种写法会造成str记录长度与实际长度不一至! 这应该是MFC的BUG函数int Replace(TCHAR chOld, TCHAR chNew);未考虑chNew为0的特殊情况 我同意老兄的看法,这应该是BUG,CString的字符串长度未被更新。但tmp.Replace('B',0);中用“\0”来代替的确比较特殊,一般可能不会有人这样做!所以这个BUG可以理解。只不过tmp.Replace("B", 0);有点奇怪了,因为参数应为tchar,而“B”本身就不符合,所以我认为这个参数有效性判断有点不对头,的出的结果就更不对头了,因为“0”就应该结束,可........,这可能才更算BUG? 你想完成这样的操作:截去字符串str中"B"以后的所有字符,你可以.................................使用别的办法,这样可能回浪费内存! 其实只有在定义UNICODE时TCHAR才被解释为wchar_t,否则TCHAR与char等效(这个宏可以从VC中查到) 在MFC中,怎样用winsock控件实现多客户端通讯? 菜鸟问:怎样设置toolbar按钮可用 ? CRecorset能不能和DataGrid绑定?如果不能我如何显示记录集? 高分求救:如何用vc实现打印机的共享,在线等 关于MDI结构的程序中自行创建新文档 单文档模式的窗体如何在一开始的时候就居中显示 请问如何让我的CListCtrl的某一行变成选择状态。 爱上一个女孩子......但,她有了男朋友,而且......该怎么办??? 我要把字符转化为数字,我记得数字0的ASCII码是0........ 怎样让程序停留指定的时间间隔? 微软的技术专家看过来 学习:wchar_t?
如果你想完成这样的操作:截去字符串str中"B"以后的所有字符,你可以
这样写:str.Replace("B", 0);
但不能这样写str.Replace('B', 0);
因为第二种写法会造成str记录长度与实际长度不一至!
函数int Replace(TCHAR chOld, TCHAR chNew);
未考虑chNew为0的特殊情况
但tmp.Replace('B',0);中用“\0”来代替的确比较特殊,一般可能不会有人这样做!所以这个BUG可以理解。
只不过tmp.Replace("B", 0);有点奇怪了,因为参数应为tchar,而“B”本身就不符合,所以我认为这个参数有效性判断有点不对头,的出的结果就更不对头了,因为“0”就应该结束,可........,这可能才更算BUG?
使用别的办法,这样可能回浪费内存!
宏可以从VC中查到)