我正在尝试使用Gtk TextIter对象从TextBuffer中提取三个字符的切片,但是在算术上遇到了麻烦。我设置了一个迭代器p来指向范围的开始,并希望q进一步指向三个字符。
我试过......
q = p + 3; // Doesn't compile
q = p; q += 3; // Doesn't compile
q = p; q++; q++; q++; // Happy
我想知道这样做的正确方法是什么。第三种方法有效,但看起来像一个可怕的黑客。
有什么想法吗?
答案 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 ++包装器上提交错误?