WideCharToMuliByte函数的使用
来源:互联网 发布:威尔数据怎么样 编辑:程序博客网 时间:2024/05/01 08:06
Unicode下的宽字符转ANSI多字节字符
现在vs中都使用的Unicode宽字节字符,但是windows的有些API需要单字节字符串的时候,比如char*,这个时候需要将宽字节转换成多字节符
使用WideCharToMultiByte将宽字符字符串转换成多字节字符串,使用MultiByteToWideChar将多字节字符串转换成宽字符字符串
int WideCharToMultiByte
(
UINT uCodePage,// 标示要与新转换的字符串关联的代码页
DWORD dwFlags,// 指定额外的转换控制,一般不使用,给0即可
PCWSTR pWideCharStr,// 指定要转换的内存地址
int cchWideChar,// 要转换字符串的长度(字符个数) 如果给-1,则由函数来判断他的长度
PSTR pMultiBytestr,// 转换所得的多字节字符串被写入的缓冲区
int cbMultiByte,// 指定pMultiBytestr缓冲区的大小,如果将0作为该参数值,则会导致该函数返回目标缓冲需要的大小(字节)
PCSTR pDefaultChar,// 当出现不能转换的字符的时候,会使用这个参数,如果这个参数为NULL,则会使用默认字符?
PBOOL pfUsedDefaultChar// 如果在转换的过程中,出现了不能转换的字符,则这个参数返回TRUE,如果所有字符都成功转换返回FALSE
)
宽字符字符串转换成多字节字符串的过程:
1. 调用该函数,将参数cbMultiByte设为0来返回一个宽字符字符串所对应的大小(字节),这样就可以知道转换之后的缓冲区的大小了
int size = WideCharToMultiByte(CP_ACP, str, str.GetLength(), NULL, 0, NULL, NULL);//得到str字符串所对应的多字节字符串的大小(字节)
char* buf = new char[size+1];//多申请一个字节的内存用来写入'\0'
2. 调用该函数进行转换
WideCharToMultiByte(CP_ACP, str, str.GetLength(), buf, size+1, NULL, NULL);//宽字符字符串转多字节字符串
buf[size] = "\0";//对于多字节字符串是以 '\0' 结尾的,所以要在字符串最后一个字符后面加上'\0'
这样就将宽字符字符串转换成了多字节字符串
- WideCharToMuliByte函数的使用
- 使用excel的函数
- format函数的使用
- format函数的使用
- SetTimer函数的使用
- showModalDialog函数的使用
- 函数对象的使用
- DECODE函数的使用
- IIF函数的使用
- AnimateWindow()函数的使用
- count(*)函数的使用
- ceiling函数的使用
- strcat函数的使用
- 常用函数的使用
- translate函数的使用
- va函数的使用
- 函数对象的使用
- sprintf函数的使用
- Java中的对象,包,类
- java按位取反
- Python学习笔记一:列表和元组
- Python文档生成工具pydoc使用介绍
- 160307小记
- WideCharToMuliByte函数的使用
- c++编译器编译过程
- 突然想起MySql乱码问题
- subString 截取“,”前面,或者后面的字符串
- 文章标题
- 蓝牙的配对和连接的建立过程
- 上传App报错 Your binary is not optimised for iPhone5
- CentOS7.1 KVM虚拟化之环境准备(1)
- datagrid的列标题怎么做修改