MultiByteToWideChar与WideCharToMultiByte用法简介(上)
这里简单介绍一下如何使用MultiByteToWideChar与WideCharToMultiByte。利用这两个函数可以实现对任意的编码类型的转换,具体说来,就是MultiByteToWideChar可以把任何编码类型转换成Unicode,然后WideCharToMultiByte可以把Unicode转换成其他编码。
MultiByteToWideChar:
作用是把其他编码形式转换成Unicode,有六个参数:
1、UINT类型,要转换的编码类型代码,GBK的代码是936,其他编码的代码如果用得着请去MSDN查;
2、字符类型设置,如果你拿不准,就用MB_PRECOMPOSED | MB_USEGLYPHCHARS; |
3、一个LPCSTR类型指针,指向要转换的字符串,可以直接用char *强制转换;
4、要转换的字符串的长度,如果是-1,那么函数认为这是一个用0x0结尾的字符串,但是注意,在这种情况下,函数也会在转换以后的Unicode字符串中增加一个0x0,请根据你的需要保留与否(要去掉,注意Unicode占用两个字节,所以要删除两个char大小;
5、一个LPCWSTR类型指针,指向一个用来保存生成的Unicode字符串的空间,必需足够大;
6、LPCWSTR指向空间的大小,如果这个值为0,那么函数不进行任何转换,而是返回所需要的大小,注意此处的大小,是以Unicode字符计算的,也就是两个char一个单位。
返回值为0说明调用失败,否则成功:在第六个参数为零的时候,返回实际需要的Unicode字符数;在第六个参数不为零的时候,返回实际写入的Unicode字符数。
在使用中,按照上述要求设置参数就可以了。其中,第六个参数,可以调用两次MultiByteToWideChar函数来实现,第一次调用时候,把第六个参数设置为0,通过返回者获得实际需要的大小,第二次调用再设置进去;简单一点,直接就设置大小为要转换字符串大小两倍就可以,肯定够用。当然,这里设置多大空间,那么第五个参数那里就一定要申请到,否则内存管理失败的程序很失败。
示范代码如下:
[原文在百度空间已经关闭]
标签集合/Tag clouds
C++
Symbain
轻松汇编
算法
论文学习
资治通鉴
Delphi
编程之美
Poco
MFC
Linux
IFC
知乎
汇编
数据分析
交叉编译
poco
j2me
android
XML
Java
DTD
飞信
零宽断言
诺基亚
联系人
编程
真值表
池西木
正则表达式
多线程
命令行
优化
stream
configure
cmake
VIM
UiAutomator
TDD
Symbian
Sqlite
SourceInsight
Python
MPAndroidChart
Kotlin
Flutter
Dokka
Chatgpt