CString与char[] 的相互转换方法以及结尾乱码问题的分析解决

  这是一个很常见的问题,下面记录下我的解决方案。

 

一、CString 转化成char[]

 

方法一:运用 CString.GetBuffer(0) 与 strcpy

 

二、char[]转化成CString

 

首先我们就会想到下面的写法

 

 

可是运行结果都是:

 

在CString的最后多出了乱码,而测试得到的CString对象的长度为7,这是为什么呢?我想是这样的:

 

CString 对象将ch 当做字符串来处理的,所以在把一个char[]转化成CString对象时,会分两个过程

 

1. 首先会把char[]转化成char*,这个转化就会在字符串的结尾产生乱码,测试如下:

调试运行得到:

 

2. 把char*字符串存储在CString对象的CStringData 对象中,这是保存的已经是存在乱码的数据了,所以在输出时

就出现了我们看到的乱码。

 

到这里或许大家都知道了乱码的原因了吧。

 

下面就着手解决,这个自然就不是问题了,只要将数组的最后一位赋值为'/0'即可。

结果如下:

 

 

 

至此问题解决

 

 

 

posted @ 2010-10-04 17:54  JarvisChu  阅读(1253)  评论(0编辑  收藏  举报