2011-10-02 57 views
3

我正在用C++开发一个游戏(实际上我是从Gosu移植到SFML)。我使用GNU Gettext作为i18n系统。如您所知,gettext返回char *使用本地编码的字符串,通常为UTF8。问题是我需要用SFML的宽字符串来识别特殊字符,如áéíüñGNU Gettext和宽字符

所以问题是:我如何从gettext的输出中创建合适的wstring?如果有某种wchar_t * w_gettext()函数,那会很好,但是没有。我尝试了一些选项,例如通过传递迭代器从原始string创建wstring,但显然它不起作用。

回答

3

到系统的狭窄,多字节编码并且它的宽字符集(不可知的任何编码细节的)之间进行转换,使用mbstowcs()wcstombs()标准C的功能,在<cwchar>找到。这是关于这个问题的previous post,这里有一些sample code