我在写一些类似于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