2011-03-16 28 views

回答

6

在很多平臺上,您將無法使用std::wstring,因爲它將具有16位元素。

相反,您應該使用std::basic_string<char32_t>,但這需要一個具有某些C++ 0x支持的編譯器。

+5

小心!記住,僅僅因爲你使用的是32位編碼並不意味着你可以假設每個代碼點代表一個字符!小心不要分割複合字符。根據你在做什麼,你可能想要尋找一個將你的字符串分解成字形集羣的庫。見http://www.unicode.org/reports/tr29。 – 2011-03-16 23:40:35

1

ICU開源庫會有所幫助,但Windows/VS2010的基礎不會幫助你。

4

wchar_t的大小是平臺相關的,它獨立於UTF-8,UTF-16和UTF-32(它可以用來表示unicode數據,但沒有說它代表的是) 。

我強烈建議使用UTF-8和std::string作爲內部字符串表示形式,並使用已建立的庫(如ICU)進行涉及unicode的複雜操作和轉換任務。