CString.Format奇怪有关问题,请达人会诊
CString.Format奇怪问题,请达人会诊
vc环境:vs2013
代码如下:
CString sHandValue("");
sHandValue.Format(_T("%c%c%c%c%c%c%c%c%c%c%c%c"), 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x06, 0x02, 0x16, 0x00, 0x05);
调试跟踪时发现,在执行完Format之后,sHandValue的值没改变,仍然是初始化时的空值“”;百思不得其解,请各位达人不吝赐教!
------解决思路----------------------
你把第一个字符给设成了0X00,这就是字符串的结束符,把0X00换成别的试试
------解决思路----------------------
正解,其实保存进去了,你可以写 int len = sHandValue.GetLength(); 之后发现他的值等于12而不是0
------解决思路----------------------
有什么不得其解的,你把0写到了字串的第一单元,就当成你是字串结束了呗
------解决思路----------------------
用 %02X 格式
------解决思路----------------------
你只需要知道,字符串是以0(\0)为结束符的
------解决思路----------------------
其实CString存一个字符串不会存其最后的\0的,他类中会有变量来维护字符串长度
------解决思路----------------------
同意。
vc环境:vs2013
代码如下:
CString sHandValue("");
sHandValue.Format(_T("%c%c%c%c%c%c%c%c%c%c%c%c"), 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x06, 0x02, 0x16, 0x00, 0x05);
调试跟踪时发现,在执行完Format之后,sHandValue的值没改变,仍然是初始化时的空值“”;百思不得其解,请各位达人不吝赐教!
------解决思路----------------------
你把第一个字符给设成了0X00,这就是字符串的结束符,把0X00换成别的试试
------解决思路----------------------
正解,其实保存进去了,你可以写 int len = sHandValue.GetLength(); 之后发现他的值等于12而不是0
------解决思路----------------------
有什么不得其解的,你把0写到了字串的第一单元,就当成你是字串结束了呗
------解决思路----------------------
用 %02X 格式
------解决思路----------------------
你只需要知道,字符串是以0(\0)为结束符的
------解决思路----------------------
其实CString存一个字符串不会存其最后的\0的,他类中会有变量来维护字符串长度
------解决思路----------------------
同意。