2

我正在尝试使用 Gtk TextIter 对象从 TextBuffer 中提取三个字符的切片,但是在算术上遇到了问题。我设置了一个迭代器 p 指向范围的开始,并希望 q 指向更远的三个字符。

我试过了...

q = p + 3;              // Doesn't compile
q = p; q += 3;          // Doesn't compile
q = p; q++; q++; q++;   // Happy

我想知道这样做的正确方法是什么。第三种方法有效,但看起来像一个可怕的黑客。

有什么想法吗?

4

2 回答 2

4

如果您阅读文档,您会看到TextIter没有+or+=运算符。它是一个双向迭代器,而不是一个随机访问迭代器,所以这是应该的。

您可以使用:

q = p;
std::advance(q, 3);

或者

q = p;
q.forward_chars(3);
于 2010-07-09T15:05:21.473 回答
0

这很奇怪。

底层的 C APIgtk_text_iter_forward_chars()应该做正确的事情。也许阅读源代码,和/或在 C++ 包装器上提交错误?

于 2010-07-09T13:49:19.263 回答