请用一段MFC下的代码演示下::WideCharToMultiByte()的使用
时间: 2024-06-07 19:11:55 浏览: 88
假设我们有一个UNICODE字符串,我们需要将其转换为ANSI字符串,可以使用::WideCharToMultiByte()函数来实现。
以下是一个简单的例子:
```c++
CString strUnicode = L"这是一个Unicode字符串";
int nUnicodeLen = strUnicode.GetLength();
// 计算所需缓冲区大小
int nAnsiLen = ::WideCharToMultiByte(CP_ACP, 0, strUnicode, nUnicodeLen, NULL, 0, NULL, NULL);
// 申请缓冲区
char* pszAnsi = new char[nAnsiLen + 1];
// 转换为ANSI字符串
::WideCharToMultiByte(CP_ACP, 0, strUnicode, nUnicodeLen, pszAnsi, nAnsiLen, NULL, NULL);
pszAnsi[nAnsiLen] = '\0';
// 打印ANSI字符串
CString strAnsi(pszAnsi);
TRACE(_T("ANSI字符串:%s\n"), strAnsi);
// 释放缓冲区
delete[] pszAnsi;
```
注:CP_ACP表示使用当前系统的默认ANSI代码页来进行转换。其他可选参数可以参考MSDN文档:https://docs.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-widechartomultibyte
阅读全文