2011-05-13 61 views
14

考慮到新字符類型char8_t,char16_tchar32_t,C++ 0x的命運是什麼?C++ 0x中wchar_t的命運是什麼?

更重要的是,std::wstring,std::wcout等呢?

w *系列課是否被棄用?
新字符類型是否有新的std::ustringstd::Ustring類?

+1

請參閱http://stackoverflow.com/questions/872491/new-unicode-characters-in-c0x。它並不回答你的所有問題(即棄用),但我想wchar_t不會被棄用。現有的代碼已經使用太多了。 – 2011-05-13 20:42:16

+2

@Boaz Yaniv:更不用說貶低通常並不意味着什麼。實現者實現已棄用的東西,因爲他們需要編譯舊軟件,而沒有人會因爲貶低警告而重寫舊軟件。 – 2011-05-13 20:56:11

+0

沒有人會在棄用警告中重寫糟糕的軟件,但誠實地發現和替換並不是什麼大不了的事情。在我們所有的代碼中,我們已經用NULL來取代'nullptr'。 – AJG85 2011-05-13 21:24:09

回答

8

wchar_t沒有任何反應,它仍然是實現特定的(並且與C兼容)。

新類型char16_t和char32_t在新標準中定義了語義。舊的wchar_t 可能是等效於其中之一,但在不同的實現上可能不同。或者在一些系統上沒有。

對於新字符類型的字符串,您將有typedefs u16stringu32string,但沒有新的標準流。

+0

你能否確認std :: string應該包含utf8字符?還是有另一種類型的呢? u8string? – Klaim 2011-05-13 23:42:13

+3

沒有'u8string'。 'char'具有「UTF-8代碼單元」,「基本執行字符集的成員」或「字節」的重載意義。 – dan04 2011-05-14 04:19:04

+2

@Klaim - 就像丹說的那樣,std :: string可以(不應該)包含UTF-8。由申請決定解釋。該語言已經有三種窄字符類型,並且委員會猶豫添加了第四種! – 2011-05-14 06:05:49