2012-02-06 28 views
1

我可以在我的應用程序中使用Boost.Locale支持Unicode中的所有std :: string嗎?閱讀完文檔後,我可以說是。但我不明白它是如何工作的。主要問題是我仍然可以使用boost字符串算法庫或Boost.Lexical_Cast庫嗎?如果是的話,爲什麼我需要boost::locale::to_upper和類似的格式方法,如果我在boost字符串算法庫中有這些方法。Boost.Locale - C++中的Unicode字符串

回答

2

是的,您可以使用Boost.Locale編碼您的應用程序中的所有字符串。

要讓它工作,請將語言環境嵌入到字符串中,或​​將默認全局語言環境設置爲新的基於Unicode的語言環境(由Boost.Locale生成)。 看到這裏如何做到這一點:http://www.boost.org/libs/locale/doc/html/locale_gen.htmlhttp://www.boost.org/libs/locale/doc/html/faq.html

在Boost.Locale字符串處理的API是在加速字符串算法庫提供的不同。 看到這裏爲什麼Boost.Locale功能更好:http://www.boost.org/libs/locale/doc/html/conversions.html

你仍然可以使用boost :: lexical_cast的,只要你正確設置全局區域設置(如,如果我沒有記錯,你不能明確地傳遞語言環境對象Boost.LexicalCast)。

但請記住,這會'破壞'一些情況,例如,將整數轉換爲字符串時,而不是使用C語言環境(可能是您之前的默認設置),它將使用不同的語言環境,可能會插入分隔符等。在進行不會向用戶顯示的轉換時,您可能希望直接使用std :: stringstream等來避免這些不需要的格式更改。

我強烈建議您完整閱讀Boost.Locale documentation,因爲它應該能夠解決您關心的大部分問題(特別是常見問題解答,代後端信息等)。