2

Gtk TextIterオブジェクトを使用してTextBufferから3文字のスライスを持ち上げようとしていますが、演算に問題があります。範囲の先頭を指すようにイテレータpを設定し、qがさらに3文字を指すようにします。

私が試してみました...

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

これを行う正しい方法を知りたいのですが。3番目の方法は機能しますが、恐ろしいハックのように見えます。

何かご意見は?

4

2 に答える 2

4

ドキュメントを読むと、 or演算子TextIterがないことがわかります。これは双方向のイテレータであり、ランダム アクセスのイテレータではないため、本来あるべき姿です。++=

次のいずれかを使用できます。

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

また

q = p;
q.forward_chars(3);
于 2010-07-09T15:05:21.473 に答える
0

それは変だ。

基礎となる C API にはgtk_text_iter_forward_chars()、正しいことを行うべきものがあります。ソースを読んだり、C++ ラッパーのバグを報告したりできますか?

于 2010-07-09T13:49:19.263 に答える