tim4146 发表于 2018-11-8 13:23:17

CString这个操作不报错但是没效果,求大神指导

messageOutput 是一个CString类型的变量,现在希望在尾部加一个字符串并且是格式化的字符串(不想临时建立对象了,希望这样直接加上去)。断点打了发现这段代码执行之后,messageOutput 没变。
为什么?

jpchen 发表于 2018-11-8 13:57:35

你检查一下messageCount是不是为0

tim4146 发表于 2018-11-8 14:03:34

jpchen 发表于 2018-11-8 13:57
你检查一下messageCount是不是为0

第一次默认是0,但是没关系吧

uindex 发表于 2018-11-8 14:09:22

因为你这属于用逗号表达式去初始化CString,CString构造函数不支持后面参数,会直接忽略,这样以来逗号后面你随便写啥都没关系不会报错。

tim4146 发表于 2018-11-8 14:13:40

uindex 发表于 2018-11-8 14:09
因为你这属于用逗号表达式去初始化CString,CString构造函数不支持后面参数,会直接忽略,这样以来逗号后面 ...

现在的现象是逗号后面的数字没有,前面的中文也没。这句代码就和没执行一样……
类似的代码,用QT的QString 是可以做到的

uindex 发表于 2018-11-8 14:23:24

tim4146 发表于 2018-11-8 14:13
现在的现象是逗号后面的数字没有,前面的中文也没。这句代码就和没执行一样……
类似的代码,用QT的QStri ...

那难不成你把后面的count删掉output也不会变么?

jpchen 发表于 2018-11-8 15:04:29

可能是messageCount为0导致了初始化为空,你将messageCount这个参数去掉试试

tim4146 发表于 2018-11-8 15:14:50

jpchen 发表于 2018-11-8 15:04
可能是messageCount为0导致了初始化为空,你将messageCount这个参数去掉试试

我的目的就是希望能格式化创建字符串,恨不得用format呢,因为想把计数数字messageCount 放进去

jpchen 发表于 2018-11-8 15:40:53

你用messageCount这个参数来做构造函数的第二个参数,那就需要给它一个准确的值,因为这个时候,它的数值决定了字符串长度,比如CString(_T("abcd\r\n"),2),那么你得到的字符串就是"ab",后面的都被忽略掉了,你给它一个0,那么就是空字符串了。

WinExt 发表于 2018-11-8 15:48:47

楼主+= 后面属于强制转换吧,印象中强制转换不能带参数,其实Format很好用啊,将后面的先转成一个临时的CString变量,然后再将这个变量拼接到messageOutput 后面。
页: [1]
查看完整版本: CString这个操作不报错但是没效果,求大神指导