5

コンパイラ プロジェクトに C++streambufクラスを使用しており、ストリーム内の現在の位置を取得する便利な方法が必要です。

位置を変更するための2 つのメンバー関数streambuf::pubseekposと aがあり、それを読み取るためのメンバー関数 (または同様のもの) がないことにかなり混乱しています。streambuf::pubseekoffstreambuf::pubgetpos

次の 2 つの回避策が考えられます。

  1. 現在の位置を別の変数に保存し、ストリームから文字を読み取るたびに手動で変更できます。

  2. streambuf::pubseekoff(0, ios_base::cur)新しいストリーム位置を返すを呼び出すことができます。

2 番目のオプションは使用できるように見えますが、このような些細な作業には非効率的で見栄えがよくありません。それを行うより良い方法はありますか?

4

1 に答える 1

7

にはstreambuf、位置を読み取るための個別のインターフェイスはありません。ただし、istreamおよびostream(tellgおよびtellpそれぞれ) を実行します。

興味深いことに、ストリームはオプション 2を使用して位置を取得するため、問題ありません。

于 2013-03-20T13:55:37.370 に答える