- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C字符转化
C++字符编码转换函数
?(2011-03-17 17:47:05)
1.MultiByteToWideChar函数功能:该函数映射一个字符串到一个宽字符(unicode)的字符串。由该函数映射的字符串没必要是多
字节字符组。函数原型:
int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar);
CodePage[in]:指定执行转换的源代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值:CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。等等
dwFlags[in]:意义上网查,一般为0;
lpMultiByteStr[in]:指向将被转换字符串的字符。
cchMultiByte[in]:指定由参数lpMultiByteStr指向的字符串中字节的个数。如果这个值为-1,字符串将被设定为以NULL为结束符的字符串,并且自动计算长度。
lpWideCharStr[out]:指向接收被转换字符串的缓冲区。
cchWideChar[in]:指定由参数lpWideCharStr指向的缓冲区的字节个数。若此值为零,函数返回缓冲区所必需的宽字符数,在这种情况下,lpWideCharStr中的缓冲区不被使用,lpWideCharStr可设为NULL
返回值:如果函数运行成功,并且cchWideChar不为零,返回值是由lpWideCharStr指向的缓冲区中写入的宽
字符数;如果函数运行成功,并且cchMultiByte为零,返回值是接收到待转换字符串的缓冲区所需求的宽字
符数大小,包括NULL结束符;如果函数运行失败,返回值为零。
2.WideCharToMultiByte函数功能:该函数映射一个unicode字符串到一个多字节字符串。
函数原型:
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPWSTR lpWideCharStr,
int cchWideChar,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPCSTR lpDefaultChar,
PBOOL pfUsedDefaultChar );
CodePage[in]:指定执行转换的目的代码页,参考MultiByteToWideChar函数中的此参数
dwFlags [in]:意义上网查,一般为0
lpWideCharStr[in]:指向将被转换的unicode字符串
cchWideChar[in]:指定由参数lpWideCharStr指向的缓冲区的字符个数。如果这个值为-1,字符串将被设定为以NULL为结束符的字符串,并且自动计算长度。
lpMultiByteStr[out]:指向接收被转换字符串的缓冲区。
cchMultiByte:指定由参数lpMultiByteStr指向的缓冲区最大值(用字节来计量)。若此值为零,函数返回lpMultiByteStr指向的目标缓冲区所必需的字节数,在这种情况下,lpMultiByteStr参数通常为NULL。
lpDefaultChar和pfUsedDefaultChar:意义上网查,一般都为NULL
返回值:如果函数运行成功,并且cchMultiByte不为零,返回值是由 lpMultiByteStr指向的缓冲区中写入的字节数;如果函数运行成功,并且cchMultiByte为零,返回值是接收到待转换字符串的缓冲区所必需的字节数;如果函数运行失败,返回值为零。
3.各种编码转换
//ascii和unicode之间的编码转换
size_t ascii_to_unicode(const char* src, wchar_t* dest, size_t dest_len, size_t src_len = 0){????if(src_len == 0)????????src_len = strlen(src);????return MultiByteToWideChar(CP_ACP, 0, src, static_castint(src_len),????????dest, static_castint(dest_len));}size_t unicode_to_ascii(const wchar_t* src, char* dest, s
文档评论(0)