gpt4 book ai didi

c++ - 如何将 wchar_t 转换为 LPSTR?

转载 作者:可可西里 更新时间:2023-11-01 18:28:43 26 4
gpt4 key购买 nike

如何将字符串从 wchar_t 转换为 LPSTR

最佳答案

wchar_t 字符串由 16 位单元组成,LPSTR 是指向八位字节字符串的指针,定义如下:

typedef char* PSTR, *LPSTR;

重要的是 LPSTR 可能以 null 结尾。

wchar_t 转换为 LPSTR 时,您必须决定要使用的编码。完成后,您可以使用 WideCharToMultiByte执行转换的函数。

例如,下面是如何将宽字符字符串转换为 UTF8,使用 STL 字符串来简化内存管理:

#include <windows.h>
#include <string>
#include <vector>

static string utf16ToUTF8( const wstring &s )
{
const int size = ::WideCharToMultiByte( CP_UTF8, 0, s.c_str(), -1, NULL, 0, 0, NULL );

vector<char> buf( size );
::WideCharToMultiByte( CP_UTF8, 0, s.c_str(), -1, &buf[0], size, 0, NULL );

return string( &buf[0] );
}

您可以使用此函数将 wchar_t* 转换为 LPSTR,如下所示:

const wchar_t *str = L"Hello, World!";
std::string utf8String = utf16ToUTF8( str );
LPSTR lpStr = utf8String.c_str();

关于c++ - 如何将 wchar_t 转换为 LPSTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com