在研究 C 和 C++ 字符编码的过程中,我遇到了两种通用的编码方式:多字节字符和宽字符。为了加强我对那些系统(优点和缺点)的理解,我想做一些例子。 由于 wchar_t 类型的 native 支持,使用宽字符做示例不是问题。但是当我想创建一个包含那些所谓的多字节字符的字符串时,我遇到了问题。
我如何实际创建一个多字节字符串,该字符串使用与 char 数组一起使用的编码(使用 Visual C++)?这种编码确实存在:http://www.gnu.org/software/libc/manual/html_node/Shift-State.html .但我只读过它,从未见过一个实际的例子。还是您必须为这种字符串创建自己的编码?
最佳答案
如果你能够创建一个宽字符串文字,简单地省略 L 应该给你一个多字节字符串文字与一个实现定义的编码(gcc 有一个选择它的选项,我不知道 visual C++) .
如果您有一个宽字符串,您可以使用函数 wcstombs
根据 C 语言环境获得等效的多字节字符串(在 <stdlib.h>
中)和 wcsrtombs
(在 <wchar.h>
中)。
C++ 语言环境系统也提供了一种方法来进行这种转换。 (寻找 in
和 out
的 codecvt
成员,我不会在这里提供它们的使用教程,网站 cppreference 有示例代码,例如 out )。
我不确定您能否在 Unix 或 Windows 上轻松找到对带移位状态的编码的支持。您应该搜索中国、日本、韩国、越南的编码(例如 ISO 2022-JP ,但在我看来,Unix 倾向于使用 EUC-JP 和 Windows Shift JIS )。
关于c++ - 如何在 C 中创建多字节字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25666999/