ucnv_convertEx 中的 ICU 枢轴缓冲区

ICU Pivot Buffer in ucnv_convertEx

ICU 库中的转换器 ucnv_convertEx() 可选地需要一个 'pivot' 缓冲区。相应的指针可能设置为 NULL,但这样做的实际目的是什么?它更快吗?不将源指针递增到最后一个转换字节 + 1 还不够吗?

"pivot" 缓冲区只是临时 space 用于临时保存从源到 UTF-16 的转换,然后从 UTF-16 到目标(如果直接转换源和目标之间不存在)。即ucnv_convertEx()通过UTF-16"pivoting"从源转换为目标。

如果您不提供数据透视缓冲区,则使用内部缓冲区(1024 个堆栈分配的 UChars)。

如果您已经分配了大量 space(因此与 UTF-16 的转换是一次性发生的),或者您想要检查中间值,则提供数据透视缓冲区可能会更有效如有错误请转换。