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