作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何将字符串从 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/
我是一名优秀的程序员,十分优秀!