lpcwstr易语言数据类型是什么类型

C++使用WideCharToMultiByte函数生成UTF-8编码文件的方法_C 语言
作者:用户
本文讲的是C++使用WideCharToMultiByte函数生成UTF-8编码文件的方法_C 语言,
WideCharToMultiByte函数映射一个unicode字符串到一个多字节字符串。
函数原型:
int WideCharToMultiByte
UINT CodePage, //指定执行转换的代码页
WideCharToMultiByte函数映射一个unicode字符串到一个多字节字符串。
函数原型:
int WideCharToMultiByte
UINT CodePage, //指定执行转换的代码页
DWORD dwFlags, //允许你进行额外的控制,它会影响使用了读音符号(比如重音)的字符
LPCWSTR lpWideCharStr, //指定要转换为宽字节字符串的缓冲区
int cchWideChar, //指定由参数lpWideCharStr指向的缓冲区的字符个数
LPSTR lpMultiByteStr, //指向接收被转换字符串的缓冲区
int cchMultiByte, //指定由参数lpMultiByteStr指向的缓冲区最大值
LPCSTR lpDefaultChar, //遇到一个不能转换的宽字符,函数便会使用pDefaultChar参数指向的字符
LPBOOL pfUsedDefaultChar //至少有一个字符不能转换为其多字节形式,函数就会把这个变量设为TRUE
参数:CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值:
CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线程ANSI代码页;
CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。
lpWideCharStr:指向将被转换的unicode字符串。
cchWideChar:指定由参数lpWideCharStr指向的缓冲区的字符个数。如果这个值为-1,字符串将被设定为以NULL为结束符的字符串,并且自动长度。
lpMultiByteStr:指向接收被转换字符串的缓冲区。
cchMultiByte:指定由参数lpMultiByteStr指向的缓冲区最大值(用字节来计量)。若此值为零,函数返回lpMultiByteStr指向的目标缓冲区所必需的字节数,在这种情况下,lpMultiByteStr参数通常为NULL。
lpDefaultChar和pfUsedDefaultChar:只有当WideCharToMultiByte函数遇到一个宽字节字符,而该字符在uCodePage参数标识的代码页中并没有它的表示法时,WideCharToMultiByte函数才使用这两个参数。如果宽字节字符不能被转换,该函数便使用lpDefaultChar参数指向的字符。如果该参数是NULL(这是大多数情况下的参数值),那么该函数使用系统的默认字符。该默认字符通常是个问号。这对于文件名来说是危险的,因为问号是个通配符。pfUsedDefaultChar参数指向一个布尔变量,如果Unicode字符串中至少有一个字符不能转换成等价多字节字符,那么函数就将该变量置为TRUE。如果所有字符均被成功地转换,那么该函数就将该变量置为FALSE。当函数返回以便检查宽字节字符串是否被成功地转换后,可以测试该变量。
返回值:如果函数运行成功,并且cchMultiByte不为零,返回值是由 lpMultiByteStr指向的缓冲区中写入的字节数;如果函数运行成功,并且cchMultiByte为零,返回值是接收到待转换字符串的缓冲区所必需的字节数。如果函数运行失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。它可以返回下面所列错误代码:
ERROR_INSUFFICIENT_BJFFER;ERROR_INVALID_FLAGS;
ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。
注意:指针lpMultiByteStr和lpWideCharStr必须不一样。如果一样,函数将失败,GetLastError将返回ERROR_INVALID_PARAMETER的值。
Windows CE:不支持参数CodePage中的CP_UTF7和CP_UTF8的值,以及参数dwFlags中的WC_NO_BEST_FIT_CHARS值。
生成utf-8编码的文件步骤如下:
1. 首先要写一个BOM头。UTF-8文件一般是要这个头的,当然也可以没有。
2. 将要生成的字符先使用宽字符格式生成,然后调用WideCharToMultiByte转为utf-8编码,写入文件。
例子如下:
FILE * pFile = fopen("d://a.txt", "w");
char szBOM[4] = {(char)0xEF, (char)0xBB, (char)0xBF, 0};
fprintf(pFile, "%s", szBOM);
wchar_t chNum[11] = L"零壹贰叁肆伍陆柒捌玖";
wchar_t chNum2[10] = L"亿千百拾万千百拾个";
char sz[10] = "";
wchar_t result[32] = L"";
int offset = 0;
for(int i = 0; i & strlen(sz); ++ i)
char c = sz[i];
wchar_t w1 = chNum[ c - '0'];
wchar_t w2 = chNum2[i];
swprintf(result + offset, L"%c%c", w1, w2);
offset += 2;
char szChar[64] = "";
::WideCharToMultiByte(CP_UTF8, 0, result, wcslen(result), szChar, 64, 0, 0);
fprintf(pFile, "%s", szChar);
fclose(pFile);
注意的是,当使用wchar_t而不再是char时,所有的字符串操作函数都需要时w系列的,例如wcslen、swprintf
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
易语言中文转utf8编码、易语言 utf8编码、易语言url编码 utf8、widechartomultibyte、utf8编码转换器,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!求教:char类型的实参与“LPCWSTR”类型的形参不兼容【opengl吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:4,909贴子:
求教:char类型的实参与“LPCWSTR”类型的形参不兼容收藏
AUX_RGBImageRec *LoadBMP(char *MM) // Loads A Bitmap Image{
FILE *File=NULL;
// File Handle if (!MM)
// Make Sure A Filename Was Given {
return NULL;
// If Not Return NULL } File=fopen(MM,&r&);
// 尝试打开文件 if (File)
// Does The File Exist? { fclose(File);
// Close The Handle return auxDIBImageLoad(MM);// Load The Bitmap And Return A Pointer } return NULL;
// If Load Failed Return NULL} 求教:为什么return auxDIBImageLoad(MM);里的MM会有红线
提示说是char类型的实参与“LPCWSTR”类型的形参不兼容应该怎么改?
炫酷暗黑奇迹MU页游强悍来袭,秒怪秒BOSS,奇迹重生,来玩就送海量礼包!
自行百度char*转lpcwstr
或者你直接把char改成wchar_t
工程设置里把字符集改成未设置或者直接就用wchar_t
登录百度帐号推荐应用查看: 3195|回复: 32
————一分钟学会上手的编程助手,让你会说话就轻松学会汇编、C、C++等各种编程语言
阅读权限90
结帖率: (16/36)
{:soso__:}你们想方便快捷的学会其他编程语言吗?
你们想快捷查询想要实现的功能就可以获得代码吗?
你们想获得转C语言的程序吗?
人工智能自编程,真正的会汉语就会编程
上手不用1分钟
即使你不会编程,只要输入想要达到的结果,就可以获得代码!
即使你不是C语言,输入代码,就可以转换成C语言!
可以任意扩展MSDN、任意代码
自编程知识库内没有的代码,它可以自己想出来!(实际上计算机不会想,if/then/while之类的……)
体型小巧、辅助精致,可以设置前置放在任何IDE上!
当你在写C、C++、Win32ASM程序时,如果你不知道如何用代码实现一个功能
你该怎么办!
你要去CSDN、精易求助吗?
你要去PUDN、MSDN查看类型源码吗!
太费力太费时了!
有了我的自编程Test,你可以方便查询!
{:soso__:}真的有这么牛吗?看看截图就知道!
真是赚到了!宣传的是不是太多了……{:soso__:}
{:soso__:}下载就在……两个都可以……
/lk/89afvfb5vu
/lk/89wibofvvu
您可以选择打赏方式支持楼主
阅读权限90
结帖率: (16/36)
自编程说明.png (246.9 KB, 下载次数: 0)
12:23 上传
截图就在这里……
大家别信那不管用。。。。&
阅读权限120
结帖率: (16/17)
{:3_232:}这个我顶你、、、
阅读权限150
结帖率: (10/25)
顶,下载去看看
阅读权限70
签到天数: 11 天结帖率: (2/6)
怎样才能记住数据类型啊,C++的数据类型比易多得多,总是记不住啊。
阅读权限90
结帖率: (16/36)
yuanqun 发表于
怎样才能记住数据类型啊,C++的数据类型比易多得多,总是记不住啊。
应该是易比C++的数据类型多,你新建一个变量,类型为空,你看看有多少个类型就知道了,多得你翻不过来。
C++的数据类型虽然多,但不过就是几个常用,记住常用的即可……一般情况下,哪有那么多……要不写个变量转换器?
阅读权限70
签到天数: 11 天结帖率: (2/6)
Win 32下面的数据类型
经常用VC++开发软件的朋友应该知道, 微软对以有的C++类型进行了包装,使其更明了,且更适合应用于windows下面的开发.
ATOM typedef WORD ATOM;
typedef int BOOL;
BOOLEAN typedef BYTE BOOLEAN;
typedef unsigned char BYTE;
#define CALLBACK __stdcall
typedef char CHAR;
typedef DWORD COLORREF;
#define CONST const
typedef unsigned long DWORD;
typedef ULONGLONG DWORDLONG;
typedef ULONG_PTR DWORD_PTR;
typedef unsigned int DWORD32;
typedef unsigned __int64 DWORD64;
typedef float FLOAT;
typedef HANDLE HACCEL;
#ifdef _WIN64
typedef int HALF_PTR;
typedef short HALF_PTR;
typedef PVOID HANDLE;
typedef HANDLE HBITMAP;
typedef HANDLE HBRUSH;
HCOLORSPACE
#if(WINVER &= 0x0400)
typedef HANDLE HCOLORSPACE;
typedef HANDLE HCONV;
typedef HANDLE HCONVLIST;
typedef HICON HCURSOR;
typedef HANDLE HDC;
typedef HANDLE HDDEDATA;
typedef HANDLE HDESK;
typedef HANDLE HDROP;
HDWP typedef HANDLE HDWP;
HENHMETAFILE
typedef HANDLE HENHMETAFILE;
typedef int HFILE;
typedef HANDLE HFONT;
typedef HANDLE HGDIOBJ;
typedef HANDLE HGLOBAL;
typedef HANDLE HHOOK;
typedef HANDLE HICON;
typedef HANDLE HINSTANCE;
typedef HANDLE HKEY;
typedef HANDLE HKL;
typedef HANDLE HLOCAL;
typedef HANDLE HMENU;
typedef HANDLE HMETAFILE;
typedef HINSTANCE HMODULE;
if(WINVER &= 0x0500) typedef HANDLE HMONITOR;
typedef HANDLE HPALETTE;
typedef HANDLE HPEN;
typedef LONG HRESULT;
typedef HANDLE HRGN;
typedef HANDLE HRSRC;
typedef HANDLE HSZ;
typedef HANDLE WINSTA;
typedef HANDLE HWND;
INT typedef int INT;
#if defined(_WIN64)
typedef __int64 INT_PTR;
typedef int INT_PTR;
typedef signed int INT32;
typedef signed __int64 INT64;
typedef WORD LANGID;
typedef DWORD LCID;
typedef DWORD LCTYPE;
typedef DWORD LGRPID;
typedef long LONG;
LONGLONG #if !defined(_M_IX86)
typedef __int64 LONGLONG;
typedef double LONGLONG;
LONG_PTR #if defined(_WIN64)
typedef __int64 LONG_PTR;
typedef long LONG_PTR;
typedef signed int LONG32;
typedef __int64 LONG64;
typedef LONG_PTR LPARAM;
typedef BOOL far *LPBOOL;
typedef BYTE far *LPBYTE;
LPCOLORREF
typedef DWORD *LPCOLORREF;
typedef __nullterminated CONST CHAR *LPCSTR;
#ifdef UNICODE typedef LPCWSTR LPCTSTR; #else typedef LPCSTR LPCTSTR; #endif
typedef CONST void *LPCVOID;
typedef CONST WCHAR *LPCWSTR;
typedef DWORD *LPDWORD;
typedef HANDLE *LPHANDLE;
typedef int *LPINT;
typedef long *LPLONG;
LPSTR typedef CHAR *LPSTR;
LPTSTR #ifdef UNICODE
typedef LPWSTR LPTSTR;
typedef LPSTR LPTSTR;
typedef void *LPVOID;
typedef WORD *LPWORD;
typedef WCHAR *LPWSTR;
typedef LONG_PTR LRESULT;
PBOOL typedef BOOL *PBOOL;
PBOOLEAN typedef BOOLEAN *PBOOLEAN;
typedef BYTE *PBYTE;
typedef CHAR *PCHAR;
typedef CONST CHAR *PCSTR;
#ifdef UNICODE typedef LPCWSTR PCTSTR;#else typedef LPCSTR PCTSTR; #endif
PCWSTR typedef CONST WCHAR *PCWSTR;
typedef DWORD *PDWORD;
PDWORDLONG
typedef DWORDLONG *PDWORDLONG;
PDWORD_PTR
typedef DWORD_PTR *PDWORD_PTR;
typedef DWORD32 *PDWORD32;
typedef DWORD64 *PDWORD64;
typedef FLOAT *PFLOAT;
#ifdef _WIN64 typedef HALF_PTR *PHALF_PTR;#else typedef HALF_PTR *PHALF_PTR;#endif
typedef HANDLE *PHANDLE;
typedef HKEY *PHKEY;
typedef int *PINT;
typedef INT_PTR *PINT_PTR;
typedef INT32 *PINT32;
typedef INT64 *PINT64;
PLCID typedef PDWORD PLCID;
PLONG typedef LONG *PLONG;
PLONGLONG typedef LONGLONG *PLONGLONG;
PLONG_PTR typedef LONG_PTR *PLONG_PTR;
PLONG32 typedef LONG32 *PLONG32;
PLONG64 typedef LONG64 *PLONG64;
POINTER_32 #if defined(_WIN64)#define POINTER_32 __ptr32#else#define POINTER32 #endif
POINTER_64 #define POINTER_64 __ptr64
POINTER_SIGNED #define POINTER_SIGNED __sptr
POINTER_UNSIGNED #define POINTER_UNSIGNED __uptr
PSHORT typedef SHORT *PSHORT;
PSIZE_T typedef SIZE_T *PSIZE_T;
PSSIZE_T typedef SSIZE_T *PSSIZE_T;
PSTR typedef CHAR *PSTR;
PTBYTE typedef TBYTE *PTBYTE;
PTCHAR typedef TCHAR *PTCHAR;
PTSTR #ifdef UNICODE typedef LPWSTR PTSTR;#else typedef LPSTR PTSTR; #endif
PUCHAR typedef UCHAR *PUCHAR;
PUHALF_PTR #ifdef _WIN64 typedef UHALF_PTR *PUHALF_PTR;#else typedef UHALF_PTR *PUHALF_PTR;#endif
PUINT typedef UINT *PUINT;
PUINT_PTR typedef UINT_PTR *PUINT_PTR;
PUINT32 typedef UINT32 *PUINT32;
PUINT64 typedef UINT64 *PUINT64;
PULONG typedef ULONG *PULONG;
PULONGLONG typedef ULONGLONG *PULONGLONG;
PULONG_PTR typedef ULONG_PTR *PULONG_PTR;
PULONG32 typedef ULONG32 *PULONG32;
PULONG64 typedef ULONG64 *PULONG64;
PUSHORT typedef USHORT *PUSHORT;
PVOID typedef void *PVOID;
PWCHAR typedef WCHAR *PWCHAR;
PWORD typedef WORD *PWORD;
PWSTR typedef WCHAR *PWSTR;
SC_HANDLE typedef HANDLE SC_HANDLE;
SC_LOCK typedef LPVOID SC_LOCK;
SERVICE_STATUS_HANDLE typedef HANDLE SERVICE_STATUS_HANDLE;
SHORT typedef short SHORT;
SIZE_T typedef ULONG_PTR SIZE_T;
SSIZE_T typedef LONG_PTR SSIZE_T;
TBYTE #ifdef UNICODE typedef WCHAR TBYTE;#else typedef unsigned char TBYTE; #endif
TCHAR #ifdef UNICODE typedef WCHAR TCHAR;#else typedef char TCHAR; #endif
UCHAR typedef unsigned char UCHAR;
UHALF_PTR #ifdef _WIN64 typedef unsigned int UHALF_PTR;#else typedef unsigned short UHALF_PTR;#endif
UINT typedef unsigned int UINT;
UINT_PTR #if defined(_WIN64) typedef unsigned __int64 UINT_PTR;#else typedef unsigned int UINT_PTR;#endif
UINT32 typedef unsigned int UINT32;
UINT64 typedef usigned __int 64 UINT64;
ULONG typedef unsigned long ULONG;
ULONGLONG #if !defined(_M_IX86) typedef unsigned __int64 ULONGLONG;#else typedef double ULONGLONG#endif
ULONG_PTR #if defined(_WIN64) typedef unsigned __int64 ULONG_PTR;#else typedef unsigned long ULONG_PTR;#endif
ULONG32 typedef unsigned int ULONG32;
ULONG64 typedef unsigned __int64 ULONG64;
UNICODE_STRING typedef struct _UNICODE_STRING { USHORT L USHORT MaximumL PWSTR B} UNICODE_STRING;typedef UNICODE_STRING *PUNICODE_STRING; typedef const UNICODE_STRING *PCUNICODE_STRING;
USHORT typedef unsigned short USHORT;
USN typedef LONGLONG USN;
VOID #define VOID void
WCHAR typedef wchar_t WCHAR;
WINAPI #define WINAPI __stdcall
WORD typedef unsigned short WORD;
WPARAM typedef UINT_PTR WPARAM;
阅读权限70
签到天数: 11 天结帖率: (2/6)
如果眼不花再来些MFC
阅读权限90
结帖率: (16/36)
yuanqun 发表于
如果眼不花再来些MFC
谢谢顶帖!
阅读权限90
结帖率: (16/36)
ZealotMaster 发表于
应该是易比C++的数据类型多,你新建一个变量,类型为空,你看看有多少个类型就知道了,多得你翻不过来。
不可能的,你截个图来
;前是函数功能描述后面如果有参数可以用,分割参数
都是中文字符,要求你的语言精度要够高
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪
违法和不良信息举报电话,QQ: ,,邮箱:@
Powered by
粤公网安备 25最近用VS2010建立的C++项目在char*类型数据转换到LPCWSTR的时候,默认直接转换会提示报错。用强制转换的方式会导致乱码的出现。在网上查找了资料之后知道,“从Visual C 2005开始,编译器不再进行从char*到LPCWSTR的隐式转换了,用VC 6.0编译就没问题了,或者用提供的宏TEXT(&字符串&)来使用 MessageBox一类的API函数。“
所以用VS2010进行编译的时候最好用宏TEXT(&字符串&)的方法来进行转换。例:
&&& //定义信息字符串
&&&&LPCWSTR& lpszCreate=TEXT(&收到WM_CREATE消息,创建窗口&);
&&& LPCWSTR& lpszDestroy=TEXT(&收到WM_DESTRORY消息,窗口关闭&);
&&& LPCWSTR& lpszCaption=TEXT(&消息&);
&&& LPCWSTR& lpszLBT=TEXT(&鼠标左键按下,收到消息&);
&&& LPCWSTR& lpszRBT=TEXT(&鼠标右键按下,收到消息&);
&&& LPCWSTR& lpszExit=TEXT(&你确定要退出吗&);
&&& LPCWSTR& lpszCreate=&收到WM_CREATE消息,创建窗口&;
&& LPCWSTR& lpszCreate=(LPCWSTR)&收到WM_CREATE消息,创建窗口&;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8417次
排名:千里之外
原创:13篇
(1)(1)(1)(1)(4)(1)(4)(9)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 易语言转换变量类型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信