LPCTSTR和LPTSTR和char *的区别及相互转化
1、LPCTSTR和LPTSTR和char *的区别
LPSTR = char*
LPCSTR = const char*
LPTSTR:
如果定义了UNICODE宏,那么baiLPTSTR = wchar_t*否则duLPTSTR = char*
LPCTSTR:
如果定义了UNICODE宏,那么LPCTSTR = const wchar_t*,否则LPCSTR = const char*
告诉你方法zhi,
"LP"前缀是dao历史遗留的,在Win32下就是 P ,代表指针的含义。
"C"代表const
"T"的含义就是如果定义了UNICODE,它就是宽字符版本,否则就是Ansi版本。
完整定义如下:
//Unicode 版本
typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR;
typedef WCHAR *LPWCH, *PWCH;
typedef CONST WCHAR *LPCWCH, *PCWCH;
typedef WCHAR *NWPSTR;
typedef WCHAR *LPWSTR, *PWSTR;
typedef WCHAR UNALIGNED *LPUWSTR, *PUWSTR;
typedef CONST WCHAR *LPCWSTR, *PCWSTR;
typedef CONST WCHAR UNALIGNED *LPCUWSTR, *PCUWSTR;
// Ansi版本
typedef CHAR *PCHAR;
typedef CHAR *LPCH, *PCH;
typedef CONST CHAR *LPCCH, *PCCH;
typedef CHAR *NPSTR;
typedef CHAR *LPSTR, *PSTR;
typedef CONST CHAR *LPCSTR, *PCSTR;
#ifdef UNICODE
typedef WCHAR TCHAR, *PTCHAR;
typedef WCHAR TBYTE , *PTBYTE ;
typedef LPWSTR LPTCH, PTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR PCTSTR, LPCTSTR;
typedef LPUWSTR PUTSTR, LPUTSTR;
typedef LPCUWSTR PCUTSTR, LPCUTSTR;
typedef LPWSTR LP;
#else
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE , *PTBYTE ;
typedef LPSTR LPTCH, PTCH;
typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR;
typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR;
#endif
参考:LPCTSTR和LPTSTR和char *究竟有什么区别
2、char* 转换成 LPCTSTR
char ch[1024] = "wo shi ni baba";
int num = MultiByteToWideChar(0,0,ch,-1,NULL,0);
wchar_t *wide = new wchar_t[num];
MultiByteToWideChar(0,0,ch,-1,wide,num);
解析:
num 获得长字节所需的空间
MultiByteToWideChar()表示将s中的字符传递到ps指向的内存中。-1表示传输至s中的'\0'处,num表示传递的字节个数。
3、LPCTSTR 转换成 char *
wchar_t widestr[1024] = L"wo shi ni yeye";
int num = WideCharToMultiByte(CP_OEMCP,NULL,widestr,-1,NULL,0,NULL,FALSE);
char *pchar = new char[num];
WideCharToMultiByte (CP_OEMCP,NULL,widestr,-1,pchar,num,NULL,FALSE);
参考:char* 与 LPCTSTR 类型的互相转换
LPCTSTR和LPTSTR和char *的区别及相互转化相关推荐
- 区分LPCTSTR和LPTSTR和char *
LPSTR = char* LPCSTR = const char* LPTSTR: 如果定义了UNICODE宏,那么LPTSTR = wchar_t否则LPTSTR = char LPCTSTR: ...
- java char的包装对象,Java 从Character和char的区别来学习自动拆箱装箱
本文结构 1.Character和char 的区别: 2.自动拆箱装箱java 1.Character和char 的区别: Character是类,char基本数据类型.数组 在java中有三个类负责 ...
- c语言中 char怎样用,C语言中char*和char[]用法区别分析
C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...
- int main中char** argv与char *argv[]区别?(main函数)
标准main函数写法(两种都可以): int main(int argc, char** argv){} int main(int argc, char* argc[]){} 怎么还是有点懵逼呢/?? ...
- CString与string、char*的区别和转换
我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...
- char *a 与char a[] 的区别和char** argv与char *argv[]区别
char *a 与char a[] 的区别 char *a = "hello" 中的a是指向第一个字符'a'的一个指针 char a[20] = "hello" ...
- c语言char有什么作用,C语言中char*和char[]用法区别分析
本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...
- unsigned char与char的区别
两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0__0xFF ) ...
- c# char unsigned_C 中 char、signed char 和 unsigned char 的区别
C 中 char.signed char 和 unsigned char 的区别 来源:http://bbs.chinaunix.net/thread-889260-1-1.html 参考:https ...
最新文章
- 一封邮件, 就能看出你是不是足够专业
- android社会化分享
- (JAVA)超大整数运算
- Git仓库迁移,包括所有的分支、标签、日志
- Linux学习笔记(四)之用户登录
- 与时俱进 挪威央行运用大数据预测经济情况
- mysql数据库存储过程语法错误_奇怪的mysql创建存储过程语法错误
- 四阶龙格库塔法c语言程序,四阶龙格库塔法C语言(西安交大)
- 数据分析:数据分析工具:SPSS、RapidMiner、KNIME、Kettle
- Ghostscript的介绍
- 手把手教你快速搭建Struts2框架【详细教程,建议收藏】
- 自定义 Chrome (谷歌浏览器) 主题
- Scratch编程与数学之求累加和!
- 计算机桌面为什么没有语言栏了,语言栏不见了怎么办,教您语言栏不见了怎么办...
- win7 无法访问服务器共享文件夹,win7系统共享文件夹无法访问的解决方法
- Java中的偏向锁,轻量级锁, 重量级锁解析
- Python读取图片内容并进行修改
- html铺满整个页面_html 怎么让背景图铺满整个页面?
- w7怎么写html代码,笔记本win7系统使用记事本编辑和运行html代码的方法
- 什么是五险一金,你懂吗?
热门文章
- JAVA根据营地号获取王者荣耀数据(王者荣耀战绩及王者荣耀对局详情查询)网页源码下载
- Django制作blog界面
- MES管理系统的应用和好处有哪些
- 跬智信息 (Kyligence) 成功入选 2021 年度上海市“专精特新”企业名单
- python算法之冒泡排序
- IOS隐私政策(Privacy Policy)
- ContentProvider操作数据库—一项古老的Android技术
- 通过一些免费的小工具营销
- 数据填报有什么用?数据填报系统具有哪些优势?_光点科技
- The Ribbon Tab with id: Ribbon.Read has not been made available for this page or does not exist.