我正在用C ++开发一款游戏(实际上我是将它从Gosu移植到SFML)。我使用GNU Gettext作为i18n系统。如您所知,gettext使用本地编码返回char *
个字符串,通常是UTF8。问题是我需要使用宽字符串来SFML识别特殊字符,例如áéíüñ
。
所以问题是:如何从gettext的输出中创建正确的 wstring
?如果有某种wchar_t * w_gettext()
函数会很好,但事实并非如此。我尝试了一些选项,例如通过传递迭代器从原始wstring
创建string
,但显然它不起作用。
答案 0 :(得分:3)
要在系统的窄,多字节编码及其宽字符集(任何编码细节的不可知)之间进行转换,请使用mbstowcs()
中的wcstombs()
和<cwchar>
标准C函数。这是我的previous post的主题,这里有一些sample code。
答案 1 :(得分:1)
您可以将多字节UTF-8字符串转换为宽字符。
在Windows上,使用MultiByteToWideChar。在Unix上,使用libiconv。