代码之家  ›  专栏  ›  技术社区  ›  Brian Hooper

如何做Gtk TextIter算法

  •  2
  • Brian Hooper  · 技术社区  · 14 年前

    我试图使用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 回复  |  直到 14 年前
        1
  •  4
  •   Staffan    14 年前

    如果你读了 documentation TextIter 没有一个 + += 接线员。它是一个双向迭代器,而不是一个随机访问迭代器,所以它应该是这样的。

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

    q = p;
    q.forward_chars(3);
    
        2
  •  0
  •   unwind    14 年前

    真奇怪。

    gtk_text_iter_forward_chars() 应该做正确的事。可能读取源代码,和/或在C++包装器上文件错误?