0

QBufferを介してオブジェクトとの間で繰り返し書き込みと読み取りを試みていますQTextStream。まず、両方のオブジェクトを構築します。

QBuffer b;
b.open(QIODevice::ReadWrite);
QTextStream s(&b);
// Setup text stream here

次に、情報の 3 つの異なる部分を書き、それらを読み返します。

s << "Test" << 666 << endl << flush;
s.seek(0);
qDebug() << s.readAll();

s << "X" << endl << flush;
s.seek(0);
qDebug() << s.readAll();

s << "Test" << 777 << endl << flush;
s.seek(0);
qDebug() << s.readAll();

もちろん、直前に書いたデータ部分は取得しませんが、累積されたデータは次のとおりです。

"Test666\n"
"Test666\nX\n"
"Test666\nX\nTest777\n"

正しいデータを取得するためにアダプティブ シーク コールを実行できますが、無限に拡大することは望ましくありませんQBuffer

s.reset()書き込みの間に呼び出しを試みましたが、結果は同じです。reset()バッファに対してoropen()/close()を直接呼び出すと、不自由な結果が得られます (ストリームがバイパスされるため、これは予想されます)。

"Test666\n"
"X\nst666\n"
"Test777\n"

おそらくサイクルごとに新しいバッファを作成し、それを開いてストリームにアタッチすることはできますが、それは遅いです。

このユースケースに適した迅速な解決策はありますか?

4

1 に答える 1