我一直在挖掘規範一段時間,並找不到任何決定性的條款來支持是/否。必須char16_t字符串使用UTF-16編碼嗎?
執行以下語句:
char16_t *s = u"asdf";
意味着/強制執行字符串 「ASDF」 必須以UTF-16編碼?
從我可以推論,這是一個是的。
然而,這一提議n2018它只是說,當「__STDC_UTF_16__
」被定義char16_t
文字是UTF-16編碼,使葉片打開門,當「__STDC_UTF_16__
」是不確定的,char16_t
文字可無論如何編碼的編譯器想。
畢竟,該標準只保證char16_t
的大小,符號和底層表示,它沒有提到編譯器必須如何編碼文字或字符串文字。
在規範,它說
一個
char16_t
字符串文字的大小是轉義 序列,萬向字符名稱和其它字符的總數目,加上一個 用於需要每個字符代理對,加上一個用於終止u'\ 0'的 。 [注意:char16_t
字符串文字的大小是 代碼單元的數量,而不是字符數。末端注]
這似乎意味着它隱含地假設char16_t
字符串文字是UTF-16編碼,因爲「代理對」是一個概念UTF16。
讓我知道是否有任何模糊的問題。
是否有關於_GTFO_規範的權威來源?或者那是非規範性的? – sehe
§1.1/ 1 [intro.scope]:「本國際標準規定了C++編程語言實現的要求 第一個這樣的要求是它們實現了語言,所以這個國際標準也定義了C++。第一項要求出現在本國際標準的各個地方。「 –
謝謝,這有幫助 – sehe