2013-10-04 36 views
1

我有一個程序,它的各種操作上char類型std::string,例如Windows中4字節字符的字符串?

if (my_string.front() == my_char) { 
    // do stuff with my_string 
} 

我在尋找如何讓我的程序支持Unicode一些實用的建議。我需要將字符與字符進行比較的能力,這意味着需要4個字節的字符,這樣即使是最大的Unicode字符也可以毫無損失地處理。

我在使用GCC編譯器的Windows上閱讀,在這種情況下,std::wstring是2個字節。 C++ 11擁有4個字節的std::u32string,但標準庫很大程度上不支持它。

這種情況下最簡單的解決方案是什麼?

+0

您也可以使用'的typedef的std :: basic_string的 u32string;'或類似的東西。這將管理存儲,但將unicode不知道。 – rodrigo

回答

2

即使擁有的UINT32你不能只是一個接一個地比較這些整數的字符串。你將不得不首先規範化字符串。由於規範化並不簡單,您最終會使用像ICU這樣的庫。所以,你可以直接嘗試直接使用它:)

http://site.icu-project.org/