char* 转 LPCWSTR 解决方案
在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。
1、通过MultiByteToWideChar函数转换
MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下:
- int MultiByteToWideChar(
- UINT CodePage, // code page
- DWORD dwFlags, // character-type options
- LPCSTR lpMultiByteStr, // string to map
- int cbMultiByte, // number of bytes in string
- LPWSTR lpWideCharStr, // wide-character buffer
- int cchWideChar // size of buffer
- );
int MultiByteToWideChar(UINT CodePage, // code pageDWORD dwFlags, // character-type optionsLPCSTR lpMultiByteStr, // string to mapint cbMultiByte, // number of bytes in stringLPWSTR lpWideCharStr, // wide-character bufferint cchWideChar // size of buffer
);
LPCWSTR实际上也是CONST WCHAR *类型
- char* szStr = "测试字符串";
- WCHAR wszClassName[256];
- memset(wszClassName,0,sizeof(wszClassName));
- MultiByteToWideChar(CP_ACP,0,szStr,strlen(szStr)+1,wszClassName,
- sizeof(wszClassName)/sizeof(wszClassName[0]));
char* szStr = "测试字符串";WCHAR wszClassName[256];memset(wszClassName,0,sizeof(wszClassName));MultiByteToWideChar(CP_ACP,0,szStr,strlen(szStr)+1,wszClassName,sizeof(wszClassName)/sizeof(wszClassName[0]));
2、通过T2W转换宏
- char* szStr = "测试字符串";
- CString str = CString(szStr);
- USES_CONVERSION;
- LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];
- wcscpy((LPTSTR)wszClassName,T2W((LPTSTR)str.GetBuffer(NULL)));
- str.ReleaseBuffer();
char* szStr = "测试字符串"; CString str = CString(szStr);USES_CONVERSION;LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];wcscpy((LPTSTR)wszClassName,T2W((LPTSTR)str.GetBuffer(NULL)));str.ReleaseBuffer();
3、通过A2CW转换
- char* szStr = "测试字符串";
- CString str = CString(szStr);
- USES_CONVERSION;
- LPCWSTR wszClassName = A2CW(W2A(str));
- str.ReleaseBuffer();
char* szStr = "测试字符串"; CString str = CString(szStr);USES_CONVERSION;LPCWSTR wszClassName = A2CW(W2A(str));str.ReleaseBuffer();
上述方法都是UniCode环境下测试的。
char* 转 LPCWSTR 解决方案相关推荐
- C++ Error C2664:无法将参数 1 从“const char [9]”转换为“LPCWSTR”解决方案
C++ Error C2664:无法将参数 1 从"const char [9]"转换为"LPCWSTR"解决方案 参考文章: (1)C++ Error C26 ...
- CString 、Char*与LPCWSTR类型转换解决方案
[原文出处]: https://blog.csdn.net/zhouxuguang236/article/details/8761497 https://blog.csdn.net/sl159/art ...
- char 类型与lpcwstr_C++中char*转换为LPCWSTR的解决方案
前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换.下面就列出几种比较常用的转换方法.大家可以根据自己的需求选择相对应的方法 ...
- C++ char*转LPCWSTR
C++ char*转LPCWSTR 该解决方案源自https://blog.csdn.net/zhouxuguang236/article/details/8761497 首先头文件要导入 #incl ...
- 不能将参数 2 从“const char *”转换为“LPCWSTR”【转】http://blog.sina.com.cn/s/blog_4a94a0db0100ktxp.html...
: 不能将参数 2 从"const char *"转换为"LPCWSTR" 在VS2008下使用MFC编程遇到错误: error C2664: & ...
- 不能从const char *转换为LPCWSTR --VS经常碰到
不能从const char *转换为LPCWSTR 在VC 6.0中编译成功的项目在VS2005 vs2005.vs2008.vs2010中常会出现类型错误. 经常出现的错误是:不能从const ch ...
- char*转LPCWSTR Unicode编码
在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换.下面就列出几种比较常用的转换方法. 1.通过MultiByteToWideChar函数转换 M ...
- 从“char []”转换为“LPCWSTR” 指向的类型无关
转自:http://zhidao.baidu.com/link?url=NnGhrj0LAE9WTJl-soYjaRuk2sBHAtXoBZ85KjJpeIE0TS86-CMoqXCPSKslcTW8 ...
- vs2013 无法将参数 1从“const char *”转换为“LPCWSTR” 解决办法
LPCWSTR L 后面的P是一个长的指针(以前16位windows时有短的,现在都是长的) P 这是一个指针 C 指向的是const型 W 指向的是宽字符(unicode) STR 这是一个字符串 ...
最新文章
- python使用for循环打印99乘法表-Python用for循环实现九九乘法表
- jQuery 3.1.1 官方下载地址
- JVM - ZGC初探
- UGUI 自动布局的重叠BUG
- elasticsearch 启动、停止及更改密码
- 前端安全 -- XSS攻击
- codevs1080线段树练习
- K-means 聚类算法的图像区域分割
- python脚本——Excel处理
- 数据挖掘之数据仓库详述
- GitHup使用指南——安装及上传
- 《 PHP+H5全栈工程师培训项目实战》
- 火箭是这样连胜的(转载)
- 用Python实时获取steam特惠游戏数据
- 小牛电动Q2财报:国外不乐观,国内狂下沉
- 在URL中实现简易的WebAPI验签
- 小程序源码:头像挂件工坊DIY工具
- crontab:设置计时器
- idea 启动项目突然间 java.lang.OutOfMemoryError: Java heap space
- 机器学习实践——支持向量机