在我的C ++代码中,我需要使用iconv()将Unicode字符串转换为UTF-8字符串。在调用函数之前,我需要分配适当的缓冲区大小。我看到的几个例子是对缓冲区进行过度分配(例如,输入字符串长度的两倍)。我想知道是否有办法确定转换所需的确切大小。问候。
答案 0 :(得分:1)
基本上你想要做两件事:
我会假设你知道如何做第一步,并将重点放在第二步:
* UTF-8可以编码2147483648代码点[0 ... 0x7FFFFFFF],但UTF-16只能编码它们的第一个1114112 [0 ... 0x10FFFF],这是目前唯一指定的代码。因此,在撰写本文时,U + 10FFFF以外的任何内容都是毫无意义的。我仅为了完整性而将其他人包括在内。