2010-07-09 2 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

Спасибо, Стаффан и отдохните. –

0

Это странно.

В базовом C API есть gtk_text_iter_forward_chars(), который должен поступать правильно. Может быть, прочитайте источник и/или сообщите об ошибке на обертке C++?

+0

FWIW, я использую Gtk 2.20, г ++ 4.4.3 и Ubuntu 10.4. Я рад слышать, что это не совсем то, что вы ожидаете; Я волновался, что полностью потерял сюжет. –

Смежные вопросы