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

我努力了...

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

我想知道正确的方法是。第三种方法有效,但看起来像个骇人听闻的骇客。

有什么想法吗?

最佳答案

如果您阅读documentation,将会看到TextIter没有++=运算符。它是双向迭代器,而不是随机访问迭代器,因此应如此。

您可以使用以下任一方法:

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

要么
q = p;
q.forward_chars(3);

关于c++ - Gtk TextIter算法怎么做,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3213172/

10-11 18:43