回 帖 发 新 帖 刷新版面

主题:[求助]CString如何转换为LPCSTR?

有一个CString类型的量str,要把它作为函数Write的第一个参数,Write要求第一个参数
是LPCSTR类型,因此需要把CString转化为LPCSTR类型。试了下面几种方法:
1. (LPCSTR)str,结果提示无法从CString转LPCSTR;
2. (LPCTSTR)str作为参数,结果提示Write的第一个参数无法从LPCTSTR转LPCSTR;
3. (LPCSTR)(LPCTSTR)str,结果str转换后只剩第一个字符了,比如原来str="hello",转换后只剩"h"。
4.网上有很多人说用CString的GetBuffer方法,如下:
CString str;
GetDlgItemText(IDC_EDT_SEND,str);
int nLength=str.GetLength();
LPCSTR lpszBuf=str.GetBuffer(nLength);
m_port.Write(lpszBuf);
结果指向倒数第二行,报错说“无法从“wchar_t *”转换为“LPCSTR””。

到底该怎么做呢?请各位赐教。

回复列表 (共4个回复)

沙发

从第三点来看,你的程序中的CString是Unicode的字符串,而你要的是LPCSTR类型,ANISI字符串,所以不能直接转换,要先把Unicode转为Ansi。
Unicode转Ansi可以用系统API:WideCharToMultiByte
或者用ATL的CW2A

板凳

(LPCSTR)(LPCTSTR)str这种方法是针对Ansi的,正如1楼所说,你程序中的CString是Unicode的字符串,解决方法如楼上

3 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系摩客元亨 QQ908889846
2010年,中国网民突破了4亿,
网络游戏玩家超过了3亿,
互联网即将进入全民网游的时代

4 楼

寻找中国的最优秀的网商领袖精英 淘宝商盟元亨 qq: 908889846 
当今世界正经历着全球经济一体化的大潮,中国本土企业也因此面临着前所未有的机遇与挑战。
在这场洗礼中,哪些互联网平台有能力成为世界级的电子商务平台?网商精英要怎样做,才能最终成长为世界级网商精英领袖?
淘宝商盟平台震撼登场,携手淘宝30万商家联盟购物商城。
平台刚刚启动,互联网的网商精英请咨询qq: 908889846 
占领市场第一先机,合力打造网商系统!
淘宝商盟官网   www.taobaosm.com
 http://blog.sina.com.cn/tbsm8
淘宝商盟奖励制度

我来回复

您尚未登录,请登录后再回复。点此登录或注册