2011-10-02 41 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