C++UTF-16编码的字符串怎么直接转成GBK编码,代码展示
时间: 2023-12-10 15:42:44 浏览: 89
GBK和UTF-16编码的转换接口
可以使用Windows API中的`WideCharToMultiByte`函数将UTF-16编码的字符串转换为GBK编码。以下是一个示例代码:
```c++
#include <Windows.h>
#include <iostream>
#include <string>
int main()
{
std::wstring utf16str = L"这是一个UTF-16编码的字符串";
int len = WideCharToMultiByte(CP_ACP, 0, utf16str.c_str(), -1, NULL, 0, NULL, NULL);
std::string gbkstr(len, 0);
WideCharToMultiByte(CP_ACP, 0, utf16str.c_str(), -1, &gbkstr[0], len, NULL, NULL);
std::cout << gbkstr << std::endl;
return 0;
}
```
在上面的代码中,`utf16str`是一个UTF-16编码的字符串。首先,使用`WideCharToMultiByte`函数的第一次调用获取需要的缓冲区大小,然后创建一个`std::string`,并使用第二次调用将UTF-16编码的字符串转换为GBK编码。最后,输出转换后的GBK编码字符串。
需要注意的是,此示例代码使用了默认的代码页`CP_ACP`,如果需要使用其他代码页,请修改函数调用的第一个参数。
阅读全文