MultiByteToWideChar的用法

API函数MultiByteToWideChar的用法

有关手机发送接受短消息的AT指令集
采用TPDU发送格式,要将中文转换,看到提示要用API函数MultiByteToWideChar,

就是把 AnsiString 转成 WideString, 用 BCB 非常简单了
AnsiString s = "源字符串";
WideString w = s; //w 就是转成 WideChar 的了,使用 w 就可以了

如果你想用 API 函数,参数如下:
API 函数 MultiByteToWideChar
  第一个参数为代码页, 用 GetLocaleInfo 函数获取当前系统的代码页,936: 简体中文, 950: 繁体中文
  第二个参数为选项,一般用 0 就可以了
  第三个参数为 ANSI 字符串的地址, 这个字符串是第一个参数指定的语言的 ANSI 字符串 (AnsiString)
  第四个参数为 ANSI 字符串的长度,如果用 -1, 就表示是用 0 作为结束符的字符串
  第五个参数为转化生成的 unicode 字符串 (WideString) 的地址, 如果为 NULL, 就是代表计算生成的字符串的长度
  第六个参数为转化生成的 unicode 字符串缓存的容量

int BufSize = MultiByteToWideChar(936,0,s,-1,NULL,0); //计算简体中文字符串 s 转成 widestring 之后占用的内存字节数
…… //在此处为 wsbuf 分配内存 BufSize 个字节
MultiByteToWideChar(936,0,s,-1,wsbuf,BufSize); //把简体中文 AnsiString 字符串 s 转化为 unicode 的 WideString
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MultiByteToWideChar是Windows API中的一个函数,用于将多字节字符转换为宽字符。 其使用方法如下: ```c++ int MultiByteToWideChar( UINT CodePage, // 源字符串的代码页 DWORD dwFlags, // 转换标志 LPCSTR lpMultiByteStr, // 源字符串 int cbMultiByte, // 源字符串的长度 LPWSTR lpWideCharStr, // 目标缓冲区 int cchWideChar // 目标缓冲区的大小 ); ``` 参数说明: - `CodePage`:源字符串的代码页,例如CP_UTF8表示UTF-8编码。 - `dwFlags`:转换标志,一般设置为0即可。 - `lpMultiByteStr`:源字符串。 - `cbMultiByte`:源字符串的长度,如果设置为-1,则表示源字符串以null结尾。 - `lpWideCharStr`:目标缓冲区。 - `cchWideChar`:目标缓冲区的大小,以宽字符为单位,如果设置为0,则表示函数将返回需要的缓冲区大小。 函数返回值:返回转换后的宽字符数目,如果函数失败,则返回0。 示例代码: ```c++ char str[] = "Hello, world!"; // 源字符串 int len = strlen(str); // 源字符串的长度 int size = MultiByteToWideChar(CP_UTF8, 0, str, len, NULL, 0); // 获取目标缓冲区的大小 wchar_t* wstr = new wchar_t[size + 1]; // 分配目标缓冲区 MultiByteToWideChar(CP_UTF8, 0, str, len, wstr, size); // 转换为宽字符 wstr[size] = L'\0'; // 在末尾添加null字符 ``` 注意事项: - 源字符串和目标缓冲区不能重叠。 - 如果源字符串中包含无法转换为宽字符的字符,则函数会返回0,可以通过GetLastError获取错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值