我在寫一些類似於atoi()
或strtoll()
的字符串轉換函數。我想包括我的函數的一個版本,它可以接受char16_t *或char32_t *,而不僅僅是char *或wchar_t *。C11 Unicode支持
我的函數可以正常工作,但是當我寫它時,我意識到我不明白char16_t或char32_t是什麼。我知道標準只要求它們是一個至少16或32位的整數類型,但其含義是它們是UTF-16或UTF-32。我也知道該標準定義了幾個函數,但它們不包括任何* get或* put函數(就像他們在C99中添加wchar.h
時所做的那樣)。
所以我想知道:他們期望我用char16_t和char32_t做什麼?
轉換爲UTF-8,還有什麼? – Deduplicator 2014-09-29 18:58:04
@Deduplicator:如果這就是他們希望你對他們做的事情,你會認爲他們會給你這樣做的功能...... – 2014-09-29 19:16:31
你打算不僅支持'0..9'(U + 0030 .. U + 0039)(也可能是'A..Z/a..z',最高級別爲最高級別,基數爲36),但在完整的Unicode表格中也標記爲「Numeric」的所有其他字符? 'Coz這包括印刷形式(超級和下標,圓圈數字高達20(!))和腳本特定形式(阿拉伯數字,希伯來數字),以及羅馬數字,古希臘和「計數杆」等等。 – usr2564301 2014-09-29 20:56:55