- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已阅读有关 WideCharToMultiByte 的文档,但我坚持这个参数:
lpMultiByteStr
[out] Pointer to a buffer that receives the converted string.
我不太确定如何正确初始化变量并将其输入函数
最佳答案
这里有几个函数(基于 Brian Bondy 的示例),它们使用 WideCharToMultiByte 和 MultiByteToWideChar 在 std::wstring 和 std::string 之间进行转换,使用 utf8 不会丢失任何数据。
// Convert a wide Unicode string to an UTF8 string
std::string utf8_encode(const std::wstring &wstr)
{
if( wstr.empty() ) return std::string();
int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL);
std::string strTo( size_needed, 0 );
WideCharToMultiByte (CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL);
return strTo;
}
// Convert an UTF8 string to a wide Unicode String
std::wstring utf8_decode(const std::string &str)
{
if( str.empty() ) return std::wstring();
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstrTo( size_needed, 0 );
MultiByteToWideChar (CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
return wstrTo;
}
关于c++ - 你如何正确使用 WideCharToMultiByte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215963/
我有来自 previous question 的可爱功能,如果我这样做,效果很好: wstring temp; wcin >> temp; string whatever( toUTF8(getSom
我已阅读有关 WideCharToMultiByte 的文档,但我坚持这个参数: lpMultiByteStr [out] Pointer to a buffer that receives the
我有一个用于注入(inject)的 DLL。这是通过 CBT-hook 注入(inject)的。现在,当需要通过 CBT 遇到进程,我已经绕过 WinAPI 的 ExtTextOutW 和我自己的。
Windows 7、Visual Studio 2015。 #ifdef UNICODE char *buffer = NULL; int iBuffSize = WideCharTo
我正在开发一个与一些遗留代码交互的 Windows UI 自动化客户端。在调用遗留代码的地方,我必须将 LPWSTR 转换为 char *,这在大多数情况下都有效,但有时输入字符串包含控制字符(例如不
WideCharToMultiByte() 和 wcstombs() 有什么区别什么时候用哪个? 最佳答案 简而言之:WideCharToMultiByte 函数在参数列表中公开了用于转换的编码/代码
我正在尝试使用 WideCharToMultiByte 将 std::wstring 转换为 utf8 std::string。这是我的代码: const std::wstring & utf16("
我想了解 WideCharToMultiByte,我想知道 lpUsedDefaultChar 什么时候会被设置为 TRUE。 这里有一个示例:lpszW 应该是什么才能使标志设置为真? lpszW
wcstombs 有三个参数。 WideCharToMultiByte 有八个参数, 如何替换? 如何使用wcstombs这样写: int kk = WideCharToMultiByte(936,
我有为 Win32(XP 和更高版本)设计的代码,我正在移植到 Windows Mobile 6。它包含以下行: int count = ::WideCharToMultiByte( CP_ACP,
我正在尝试编写一个可以在 EditControl 中打开和显示 ANSI 和 Unicode 的通用文本编辑器。如果我确定文本是 ANSI,是否需要重复调用 ReadFile()?无法弄清楚如何执
我有一个包含四个日文字符的 Unicode 字符串,我正在使用 WideCharToMultiByte 将其转换为指定 Shift-JIS 代码页 932 的多字节字符串。为了获得所需缓冲区的大小,我
在我的 MFC 应用程序中,我从字符串表中读取日语字符,然后使用以下代码将其转换为多字节 WCHAR wBuf[1024]; int rc; rc = LoadStringW(hInstance, i
我正在使用一个包装 std::wstring 的类,此代码需要跨平台,是否有 Windows 函数的等价物:Linux 上的 MultiByteToWideChar 和 WideCharToMulti
int main(){ //"Chào" in Vietnamese wchar_t utf16[] =L"\x00ff\x00fe\x0043\x0000\x0068\x0000\x00EO\x00
我正在尝试转换 Windows wchar_t[]到 UTF-8 编码 char[]这样就可以调用 WriteFile将产生 UTF-8编码文件。我有以下代码: #include #include
我是一名优秀的程序员,十分优秀!