2010-07-09 36 views
2

我正在嘗試使用Gtk TextIter對象從TextBuffer中提取三個字符的切片,但我在算術上遇到了問題。我設置了一個迭代器p來指向範圍的開始,並且希望q指向更多的三個字符。如何做Gtk TextIter算術

我已經試過......

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

我想知道該怎麼做了正確的方式,這是。第三種方法有效,但看起來像一個可怕的黑客。

有什麼想法?

回答

4

如果您閱讀documentation,您會看到TextIter沒有++=運算符。它是一個雙向迭代器,而不是一個隨機訪問迭代器,所以這是應該的。

您可以使用:

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

q = p; 
q.forward_chars(3); 
+0

謝謝Staffan並放鬆身心。 – 2010-07-09 15:30:29

0

這很奇怪。

底層C API有gtk_text_iter_forward_chars()這應該是正確的。也許閱讀源代碼,和/或在C++包裝器上提交錯誤?

+0

FWIW,我使用GTK 2.20,G ++ 4.4.3和Ubuntu 10.4。我很高興聽到這不像你所期望的那樣;我擔心我完全失去了情節。 – 2010-07-09 14:03:58