c++字符串LPCTSTR格式转化为char*

求高人们指点一下,或者提供一些相关资料,关于LPCTSTR、LPTSTR等一些与TCHAR......这些对应关系,和不借助MFC情况下与char*互相转换的方法。... 求高人们指点一下,或者提供一些相关资料,关于LPCTSTR、LPTSTR等一些与TCHAR......这些对应关系,和不借助MFC情况下与char*互相转换的方法。 展开
 我来答
帐号已注销
2011-09-28 · TA获得超过2326个赞
知道小有建树答主
回答量:419
采纳率:83%
帮助的人:209万
展开全部
C语言中的串有两种字符类型组成。
一种是char ,一种wchar_t。
前者是多字节串也就ANSI串,特点是每个字符最多用1个字表示,对于汉字是2个字节或者3个字节不等表示,最大程度节省字符空间。

后者是宽字节串,特点是,所有字符均由2个字节表示比如字符 'A',存入的是 ‘0’'A‘这两个字符,它的最大的好处统一了所有串表示方法,操作方面。

ANSI情况下串 “ABC中国” 存入的情况如下: ‘A’,‘B’,'C',‘中’,'国' 一共占1+1+1+2+2 个字组成(不包括末位的'\0')
宽字节串 “ABC中国”,存入的情况如下::'0''A' '0''B' '0''C' '中' ‘国’,一共占2+2+2+2+2个字节组成(不包括末位的'\0\0')。

把ANSI串(多路字节串)转化成宽字节串的方法:MultiCharToWideChar
把宽字节串转化成ANSI串 :WideCharToMultiByte

以上所有的串都是从这种串引发而来:
ANSI串:char、CHAR
ANSIC串的指针:LPSTR、PSTR、PCHAR

宽字节串:wchar_t,WCHAR
宽限字节串的指针:LPWSTR、PWCHAR、PWCHAR

有的时候,我们想编译两套代码,即在多字节下也能编译,在宽字节下也能编译,所以定义了宏了UNICODE

如果定义了UNICODE,
这些都与char(带P或者LP示表char *)等价:
LPCTSTR、LPTSTR、TCHAR
如果没有定义UNICODE,
下面这些都与wchar_t(带P或者LP表示wchar_t *)等价:
LPCTSTR、LPTSTR、TCHAR

代码表示:

#ifdef UNICODE // r_winnt
typedef WCHAR TCHAR, *PTCHAR;
typedef WCHAR TBYTE , *PTBYTE ;
typedef LPWCH LPTCH, PTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR PCTSTR, LPCTSTR;
typedef LPUWSTR PUTSTR, LPUTSTR;
typedef LPCUWSTR PCUTSTR, LPCUTSTR;
typedef LPWSTR LP;
#else /* UNICODE */ // r_winnt
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE , *PTBYTE ;
typedef LPCH LPTCH, PTCH;
typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR;
typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR;
#endif /* UNICODE */

记住带T的在不同情况表示的意思不一样,有时候表示char ,有时候表示wchar_t
猫之良品
2011-09-28 · TA获得超过1475个赞
知道小有建树答主
回答量:2060
采纳率:55%
帮助的人:771万
展开全部
我不是写C++的,不过听说有个BOOST的C++库,好像有转换工具。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式