2013-04-26 25 views
5

我發現這個主題Convert between string, u16string & u32string和解決方案(它看起來非常棒)只能使用libC++而不是libstdC++。目前libC++不可用 - 它很難編譯,並且在Windows上不能很好地工作。使用libstdC++轉換字符串,u16string和u32string

是否有任何方法使用C++ 11和libstdC++在這些表示之間進行轉換,它可以在所有平臺上工作?

我特別感興趣的是將u32_string轉換爲字符串(utf8),反之亦然。

+2

從32位Unicode字符串轉換爲utf8非常簡單,大約有10行代碼。任何原因你不能只寫代碼? utf8到32位Unicode字符串並不是非常困難。這些格式很簡單並且有很好的文檔。 – john 2013-04-26 10:29:36

+1

我很樂意使用經過驗證的圖書館,而不是自己搞砸。我不知道它是如此簡單,但我確定有人以前做過,所以我很樂意使用它 - 我真的強烈地相信代碼的可重用性;) – 2013-04-26 10:35:00

+3

總有[boost.locale](http:// www。 boost.org/doc/libs/1_53_0/libs/locale/doc/html/index.html) – Cubbi 2013-04-26 16:25:48

回答

2

在C++ 11中有一種方法可以通過wstring_convert類來實現。

然而,似乎它是尚未實現的libstdC++(如GCC 4.8)

這同樣適用於:

codecvt<char16_t, char, mbstate_t>. 
codecvt<char32_t, char, mbstate_t>. 
codecvt_utf8. 
codecvt_utf16. 
codecvt_utf8_utf16. 

事實上頭<codecvt>仍處於GCC分佈不存在。