| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13683 人关注过本帖
标题:[求助]CString如何转换为LPCSTR?
只看楼主 加入收藏
ypl_hust
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-29
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
[求助]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””。

到底该怎么做呢?请各位赐教。
搜索更多相关主题的帖子: LPCSTR CString 
2009-12-28 21:53
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:3 
你的工程属性应该是默认的宽字节,所以,CString是一个宽字节字符串,而LPCSTR是一个多字节字符串指针,当然不能转了,就算强转成了,也是乱码。
C++库或是WIN API都有多字节字符串和宽字节字符串之间相互转换的函数,上网去搜一下,找找如何将宽字节字符串转换成多字节字符串,了解一下这个概念。
2009-12-29 12:15
bccnbin2009
Rank: 7Rank: 7Rank: 7
来 自:浙江
等 级:黑侠
帖 子:86
专家分:602
注 册:2009-10-5
收藏
得分:3 
同上所说,
wchar_t是宽字节;
LPCSTR:是32-bit指针 指向一个常字符串,每个字符占1字节;
LPCTSTR:是32-bit指针 指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义;
CString 和 LPCTSTR 可以说通用,因为CString定义了自动类型转换。

不过我在VC6.0中试了一下,下面这样可行。

CString str ="nihao";
LPCSTR lpcstr = str.GetBuffer(0);
cout<<lpcstr<<endl;

你试试,不行的话就得用WideCharToMultiBytes转换一下了

滨封千里
2009-12-29 13:00
asd6791868
Rank: 1
来 自:逆流
等 级:新手上路
帖 子:362
专家分:7
注 册:2008-7-27
收藏
得分:3 
不能转!

─條路 :  ┈片天  ┈個人  ─瞬間:
2009-12-29 19:22
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
以下是引用bccnbin2009在2009-12-29 13:00:14的发言:

同上所说,
wchar_t是宽字节;
LPCSTR:是32-bit指针 指向一个常字符串,每个字符占1字节;
LPCTSTR:是32-bit指针 指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义;
CString 和 LPCTSTR 可以说通 ...
CString str ="nihao";
这句代码说明了你的工程属性里设置的是多字节的。所以可以直接取得。楼主的工程属性是宽字节的,所以不能直接转,要使用API来转换。
2009-12-29 22:07
快速回复:[求助]CString如何转换为LPCSTR?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024909 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved