如何做Gtk TextIter算法

时间:2010-07-09 13:45:21

标签: c++ gtk gtkmm

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

我试过......

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

如果您阅读documentation,则会发现TextIter没有++=运营商。它是一个双向迭代器,而不是一个随机访问迭代器,所以这是应该的。

您可以使用:

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

q = p;
q.forward_chars(3);

答案 1 :(得分:0)

这很奇怪。

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