这是一个很常见的问题,下面记录下我的解决方案。
一、CString 转化成char[]
方法一:运用 CString.GetBuffer(0) 与 strcpy
二、char[]转化成CString
首先我们就会想到下面的写法
或
可是运行结果都是:
在CString的最后多出了乱码,而测试得到的CString对象的长度为7,这是为什么呢?我想是这样的:
CString 对象将ch 当做字符串来处理的,所以在把一个char[]转化成CString对象时,会分两个过程:
1. 首先会把char[]转化成char*,这个转化就会在字符串的结尾产生乱码,测试如下:
调试运行得到:
2. 把char*字符串存储在CString对象的CStringData 对象中,这是保存的已经是存在乱码的数据了,所以在输出时
就出现了我们看到的乱码。
到这里或许大家都知道了乱码的原因了吧。
下面就着手解决,这个自然就不是问题了,只要将数组的最后一位赋值为'/0'即可。
结果如下:
至此问题解决