我正在尝试使用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/