首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++初学者char*转化cosnt CString的有关问题

2012-09-02 
C++菜鸟char*转化cosnt CString的问题大家好,请教下大家,如何把char*转化为const CString啊?百度了好久,依

C++菜鸟char*转化cosnt CString的问题
大家好,请教下大家,如何把char*转化为const CString啊?百度了好久,依然无法入门,菜鸟期待各位的解答。
char * ch = "test";
const CString str = ch(请教这里如何做转化);
先谢谢大家了

自己写的是:
const CStrng str = CStrng.format("%s",ch);结果报错:
Unexpected type name "CString" encountered.
Badly formed expression.

[解决办法]
字符串那些事儿:BSTR-LPSTR-LPWSTR-CString-VARIANT-COleVariant-_variant_t-CComBSTR-_bstr_t
http://blog.csdn.net/pizi0475/archive/2010/03/04/5346708.aspx

[解决办法]
const CString str(ch)

试试看,记不太清了

用CString一定要注意unicode问题,以前吐槽太多了
[解决办法]

C/C++ code
char *p = "test";    const CString str(p);
[解决办法]
如果你直接这么使用:
char * ch = "test";
const CString str = ch;
是可以的,CString的构造函数中会检测当前是否是Unicode环境,如果是,则会把ch进行用CP_ACP的编码方案把ch转换为Unicode格式,也就是使用系统的编码,但是这会带来一些列问题,譬如你现在在CP_GBK环境下面,你要把UTF_8编码的ch转换为CStirng,如果使用百度上面人说的方案,显然是一堆乱码,不用做任何幻想;或者你在英文系统下面,你希望把CP_GBK编码的ch转换为Unicode,也是一堆乱码;
所以标准的做法是,你必须要知道这个ch的编码是什么,如果ch中全部是普通的英文,你使用任何编码都没有问题,CP_GBK,CP_UTF8都可以,但是如果含有中文,你必须知道他的编码,UTF8和GBK对中文的编码规范千差万别,最后总结一句话,一定要知道源字符串的编码!

热点排行