Scintilla:如何在给定特定字符位置的情况下找到字节位置

时间:2010-12-20 17:30:12

标签: c++ scintilla

给定一行上的特定字符索引,例如第3行的第10个字符,是否有一种简单的方法来计算Scintilla对该角色的“位置”?

使用ASCII字符时直截了当但在使用多字节UTF-8字符时我看不到一种简单的方法,其中单个字符可能占用多个字节位置。

3 个答案:

答案 0 :(得分:1)

将行文本转换为UTF8,然后计算字节位置。如果可以进行多次请求,则进行缓存转换。

答案 1 :(得分:0)

你应该从字符串的开头开始,然后索引到字符串中,但是许多字节对应于当前位置的字符,(这样你现在可以索引下一个字符),并保持你有多少个字符的数量到目前为止看到了这种线性时间索引是UTF-8的缺点之一。也许Scintilla已经有了这样做的工具。

答案 2 :(得分:0)

你有没有尝试过:SCI_FINDCOLUMN?:
SCI_FINDCOLUMN(int line, int column)
此消息返回考虑了制表符宽度的行上列的位置。它将多字节字符视为单个列。列号与行号从0开始。