- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
wcstombs
有三个参数。
WideCharToMultiByte
有八个参数,
如何替换?
如何使用wcstombs
这样写:
int kk = WideCharToMultiByte(936, 0, szBn, ccBn+1, 0, 0, 0, 0);
如何使用wcstombs
这样写:
int kk= WideCharToMultiByte(936,
0,
szBn,
ccBn+1,
kkburr,
(ccBn+1)*sizeof(wchar_t),
0,
0)
一样吗?
最佳答案
WideCharToMultiByte
与 wcstombs
相比,它做了一些非常不同的事情,所以至少有点怀疑¹这个替换是否会成功。
具体来说,WCTMB 将 UTF-16 转换为您选择的另一种字符集(和编码)。 wcstombs
从“宽字符串”转换为“多字节字符串”,但标准将这些术语的确切定义留给了实现者。
换句话说:WCTMB 从一种已知编码转换为另一种已知编码。 wcstombs
将未知编码转换为另一种未知编码。你不能用后者替换前者,特别是如果你想转换成中文编码(那不就是 936 吗?)。
寻求进行此替换的原因是什么?无论是什么,几乎可以肯定有更合适的方法来实现目标。
更新:如果您想要一个独立于平台的可靠解决方案,那么我推荐 ICU .不要指望找到 WCTMB 的单线替代品,因为它根本不存在。
¹ 轻描淡写
关于c++ - 如何使用 wcstombs 而不是 WideCharToMultiByte ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752591/
我有来自 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
我是一名优秀的程序员,十分优秀!