当你需要一个const char* 而传入了CString时, C++编译器自动调用 CString重载的操作符 LPCTSTR()来进行隐式的类型转换。 当需要CString , 而传入了 const char* 时(其实 char* 也可以),C++编译器则自动调用CString的构造函数来构造临时的 CString对象。 因此CString 和 LPCTSTR 基本可以通用。 但是LPTSTR又不同了...
对付大多数需要字符串参数的函数,最好将函数原型中的形参指定为一个指向字符 (LPCTSTR) 而非 CString 的 const 指针。 当将形参指定为指向字符的 const 指针时,可将指针通报到 TCHAR 数组(如字符串 ["hi there"])或通报到 CString 东西。 CString 东西将自动转换成 LPCTSTR。任何能够使用 LPCTSTR 的地方也能够...
1. **直接赋值**:在 UNICODE 下,`CString` 可以直接赋值给 `LPCTSTR`,因为它们的底层类型是兼容的...
当你需要一个const char而传入了CString时, C++编译器自动调用 CString重载的操作符 LPCTSTR()来进行隐式的类型转换。 当需要CString , 而传入了const char时(其实 char * 也可以),C++编译器则自动调用CString的构造函数来构造临时的CString对象。 CString 转LPCTSTR: CString cStr; const char *lpctStr=(LPCTSTR)...
当需要CString , 而传入了const char *时(其实 char * 也可以),C++编译器则自动调用CString的构造函数来构造临时的CString对象。 CString 转LPCTSTR: CString cStr; const char *lpctStr=(LPCTSTR)cStr; LPCTSTR转CString: LPCTSTR lpctStr; CString cStr=lpctStr; ...
unicode 下CString采用双字节,英文字母也占两字节,所以会出现你说那种多了0情况,至于你显示的是e.m.a.i.l肯定是你吧这个双字节编码当成多字节输出了。顺便说下vc下的编码,分为多字节和双字节,双字节就是unicode(我们也说宽字符) 在vc里 就是WCHAR类型这种类型规定任何字符占2字节,多字节就...
CString类向const char *转换 char a[100]; CString str("aaaaaa"); strncpy(a,(LPCTSTR)str,sizeof(a)); 或者如下: strncpy(a,str,sizeof(a)); 以上两种用法都是正确地.因为strncpy的第二个参数类型为const char *.所以编译器会自动将CString类转换成const char *. CString转LPCTSTR (const char *) ...
一般来说LPCTSTR是不能转化到CString的,我是指VS2010工程里面,这是因为UNICODE的原因。楼主可以这么做:CStringA strXXX;CStringW strYYY;然后利用 strXXX去获取值,然后 strYYY = strXXX;接下来将LPCTSTR lp = (LPCTSTR)strYYY;就可以了。
ansi情况下,LPCTSTR 就是 const char*, 是常量字符串(不能修改的)。 而LPTSTR 就是 char*, 即普通字符串(非常量,可修改的)。 这两种都是基本类型, 而CString 是 C++类, 兼容这两种基本类型是最起码的任务了。 由于const char* 最简单(常量,不涉及内存变更,操作迅速), CString 直接定义了一个类型转换函数...
第一CString 重载了LPCTSTR第二:CString m_pchData就是字符串的地址第三:LPCTSTR 仅仅只返回 m_pchData的地址.楼主懂了么 Coding狂人 < 11 还有C++重载 不仅仅是 + - * / % []...还有很多可以重载的..楼主自己琢磨一下哈. Coding狂人 < 11 咋这么喜欢召唤我呀..登录...