MFC 字符串问题

来源:百度知道 编辑:UC知道 时间:2024/06/12 03:52:30
我用的是 vc++6.0
用 char a[200];
和 cstring 转换 老出现乱码
怎么样才可以去掉这后面出现的乱码呢?

首先用测试出数组的大小 然后把数组的实际长度以为的元素归零
然后将c风格字符串 转为cstring
例子:
char a[200];
.....//对a字符数组赋值
DWORD arrayLong;
......//或者已经读入的数组的字符个数
a[arraryLong] = 0;
CString str;
str = a;
就可以了
有什么问题 可以继续交流
祝你好运

是从char到WCHAR的转化还是反过来的呀?只能将char转化为WCHAR,即使用CString::Format(_T("%s"), a);或者是采用for循环和CString::operator+将a[i]逐个地加到CString当中去。

但是反过来转化是没有任何意义的。因为WCHAR(Unicode)字符占两个字节,而char占一个字节,双字节是无法转化为单字节的。最简单的讲:汉字的数量是远远超过英文字符的。所以汉字需要使用双字节来表示;如果强行将汉字用单字节(ASCI字符共有256个)表示,那这种表示是没有意义的。因为该字符集的数量远远小于汉字数量。

CString转换到char由于字符集的不同而不同,若是unicode的话strcpy就行不通哦~MSDN上有相应的unicode版本说明。自己多看看MSDN吧,那里什么都有。
char转到CString直接写就可以了,如char a[100]="hello";CString str=a;

CString 转char :strcpy(a,str);
char 转CString:str.format("%s",a);