【问题标题】:Win32 UTF-16 character indexingWin32 UTF-16 字符索引
【发布时间】:2012-05-11 09:25:52
【问题描述】:

我刚开始使用 Win32 unicode 字符串 (UTF-16)。有什么方法可以快速获取字符串中任何特定字符的字节索引,因为某些字符可能使用四个字节(从我阅读 MSDN 收集的内容)?还是应该将它们都视为每个字符两个字节?

【问题讨论】:

  • 某些字符可能会因构图而变得更大。首先,您需要定义“字符”的含义。您是指代码点、字形还是其他?
  • 我不确定这里使用的一些术语。在 SBCS 字符串中,每个字节都是一个“字符”。现在使用 UTF,由于编码,每 2 个字节可能是一个字符,但可能更多。找出特定字符的索引以从开始字符开始并一次遍历它直到到达目标字符的唯一方法是?
  • 问题是你想要完成什么?除非你开发一个 Unicode 算法(你不应该这样做,因为它非常复杂)或实现一些输入/输出方法(比如从头开始实现一个编辑控件或文本渲染引擎),你甚至不需要担心“字符”和编码。 If you do, you're doing something wrong.

标签: string winapi unicode utf-16


【解决方案1】:

CharNext()CharPrev() API 可用于在 Windows 上安全地遍历 UNICODE 字符串。

要获取 UNICODE 字符串的第 n 个字符,请在循环中调用 CharNext()。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 2016-05-31
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多