2011-12-06 146 views

回答

4

爲什麼要替換任何東西?

stringwstring是對應於charwchar_t,其與所述環境中的界面的上下文中是指攜帶在分別爲「系統的窄多字節表示」編碼的數據和固定寬度在「字符串類別系統的編碼「。

在另一方面,u8/u/U,以及char16_tchar32_t,以及對應的字符串類別,旨在用於UTF-8/16/32編碼的Unicode碼點序列的存儲。

後者是與前者分開的問題域。該標準不包含橋接兩個域的機制(並且通常需要諸如iconv()的庫來使該橋可移植,例如通過對WCHAR_T/UTF-32進行轉碼)。

這裏是我的相關問題標準列表:#1#2#3

2

std::u16stringstd::u32string。您可能希望使用這些標準庫的標準庫命名一個用fstream打開的文件,將不會被改爲使用這些文件,因爲它們實際上不能。例如,某些平臺採用幾乎任意的字節字符串來命名要打開的文件,但沒有指定的編碼。不得不通過具有特定編碼的字符串運行它會破壞事物並且不兼容。

+0

這些僅在'C++ 11' /'C++ 0x'中可用,並非所有編譯器或操作系統都完全支持。 – waddlesplash