GNU Gettext和宽字符

4
我正在使用C++开发一个游戏(实际上是从Gosu移植到SFML),并使用GNU Gettext作为i18n系统。正如您所知,gettext使用本地编码通常是UTF8返回char *字符串。问题是,我需要使用宽字符串才能使SFML识别特殊字符,例如áéíüñ
那么问题来了:如何从gettext的输出创建一个wstring?如果有一种wchar_t * w_gettext()函数就好了,但没有。我尝试了一些选项,例如通过传递迭代器从原始的string创建wstring,但显然这不起作用。
2个回答

3

要在系统的狭窄、多字节编码和它的宽字符集之间进行转换(与任何编码特定无关),可以使用标准 C 函数 mbstowcs()wcstombs(),它们位于头文件<cwchar>中。下面是我之前发表的一篇关于该主题的帖子,这里有一些示例代码


1

你可以将多字节的UTF-8字符串转换为宽字符。

在Windows上,使用MultiByteToWideChar。在Unix上,使用libiconv


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接