問題タブ [streambuf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
571 参照

c++ - ストリーム、stream_bufs、codecvtファセット、および\nから\r\nへの変換

C ++ IOストリームのどの部分\r\r\n変換しますか?それ自体ですか、それともファセットstream_bufによる内部から外部へのエンコーディング変換の一部ですか?codecvt

更新1

あなたは皆、それがstreambuf/filebufで行われると言います。Ok。しかし、この配置は、たとえばUTF-16のような外部エンコーディングをどのように処理しますか?ios::binary次に、翻訳を無効にするフラグを付けてファイルを開く必要があるようです。

0 投票する
1 に答える
2028 参照

c++ - C++: std::istream 読み取りとその std::streambuf アンダーフローへの呼び出し

次のコードは、 を で使用するunderflowときに が呼び出される頻度を単純にテストします。std::istream readstd::stringbuf

出力は次のとおりです。

get 領域に存在するバイト数を正確に読み取ったため、アンダーフローは 1 回だけ呼び出されると予想していましたが、なぜ再びアンダーフローする必要があるのでしょうか。これは予想される動作ですか?私のカスタムunderflowメソッドは、新しいデータを読み取るために長時間ブロックされる可能性があるため、質問してunderflowいます。この場合、2 番目の呼び出しはあまり望ましくありません。

私はclang 3.1libc++を使用して Osx を使用しています。

ありがとうございました!

アップデート:

私は完全に別のテストを作成しましたが、これはlibstd++ では発生しないため、これはlibc++実装の奇妙さのように思えます。誰かが他の実装でこれをテストできますか? これはバグですか、それとも単なる実装の違いですか (私にはかなりバグがあるように感じます)。上記のコードを更新して、任意の main.cpp にコピー アンド ペーストできるようにしました。

アップデート2:

結局、これは libc++ のバグでした。 http://llvm.org/bugs/show_bug.cgi?id=13113を参照してください。自分で libc++ をコンパイルすれば、バグはなくなるはずです。すぐに試してみます。

0 投票する
1 に答える
545 参照

c++ - cout a stringstreamが2回破損したcoutになります(最小限の例)

私は次のコードを持っていますが、結果が次のようになる理由がよくわかりません。

出力:

残りはどこにありますか??¿上記の行のコメントを外した場合にのみ出力されます...内部で何が起こりますか?誰か知っていますか?=)おもしろいでしょう...

0 投票する
0 に答える
464 参照

c++ - Boost.Asio streambuf: streambuf にデータをコピーする方法

重複の可能性:
streambuf の内容を文字列にコピーする

最近、boost::asio::streambuf に取り組んでいます。私は英語が下手なので、自分の言いたいことを表現できません。というわけで、まずは以下のコードを見てください。

#1 で、データが から読み取られbuf、 に格納されbdataます。

これにより、 に保存されているデータがbdataから削除されbufます。streambuf からデータを取得したいのですが、streambuf の内容をまったく変更したくありません。

streambuf には大量のデータがあり、必要なデータは streambuf の先頭にあります。

出来ますか?ありがとうございました。

0 投票する
2 に答える
2490 参照

c++ - クラスを介したC++でのstreambufを使用したバイナリデータの読み取り

私はc++で私の人生の新しい段階を始めようとしているacプログラマーです(私はまだ以下のprintfを使用していることを知っていますが、それはフォーマットがとても簡単だからです)。オブジェクトのメンバー関数からデータファイルの最初のバイトを出力しようとしています。データを読み取る前にストリームバッファが破棄されていると思いますが、どうすればよいかわかりません。

私のクラスは次のようになります

私のコンストラクターはファイルを開き、バッファーを取り出し、最初のバイトを出力して戻ります。(私pbufはこのコードの終わりで死にかけていると思います)。このコードは出力しますFirst Byte (in constructor): 0x8C

私の読み取りヘッダーは最初のバイトをダンプしていますが、出力に基づいてすべてが表示されますFirst Byte (in readHeader): 0xFF

私のメインは単にパーサーを作成し、readHeaderを試みます

私の問題の解決策はストリームバッファを作成することだと思いますが、私にnewnew streambuf(file.rdbuf())うまくいきません。何かアドバイス?

0 投票する
1 に答える
1003 参照

c++ - boost :: asio :: streambufは縮小してフィットしますか?

boost :: asio :: streambufのサイズは、consume()が呼び出されるまで増加し続けます。
消費()が呼び出された後でも、基になるバッファによって使用されているメモリが解放されることはありません。

例:次のコードは、max_sizeを指定せずに最初にstreambufを作成しました。次に、14Mbのデータをstreambufにダンプします。次に、それらすべての14MBのデータを消費します。ポイント2000では、streambuf.size()は0ですが、「top」は、プロセスがまだ14MBのRAMを使用していることを示しています。

max_sizeを指定したくありません。とにかくそれが空になった後にstreambufを縮小することはありますか?

0 投票する
1 に答える
151 参照

c++ - POD 以外のタイプのストリームを作成することは可能ですか?

C++ では、独自の実装を使用して、POD 以外のタイプのオブジェクトのストリームを作成する必要がありますstd::basic_streambuf<Type>。予想されるときにオブジェクトを構築/破棄するために標準ライブラリが必要ですか?

0 投票する
0 に答える
267 参照

c++ - istreambuf_iterator による反復後の文字列ストリームの再利用

istreambuf_iteratorそのようなイテレータを必要とする関数に a の周りにラッパーを渡す場合stringstream、ヒープ割り当てをトリガーせずに、関数が戻った後にストリームの既存のバッファを再利用 (上書き) するにはどうすればよいですか?
clear新しい文字が挿入されると再割り当てが発生するようです。)

0 投票する
0 に答える
350 参照

c++ - streambuf クラスのどのメンバーが、メモリ内の実際のバッファーを指していますか?

この質問は私の以前の質問に関連しています。以下のコードを使用して、 にstreambuf関連付けられたオブジェクトの値を調べましたcout。VS2010 IDE を使用すると、このクラスにいくつかのメンバーが表示されます。これらのメンバーのどれがメモリ内の cout の null バッファを指しているのか、誰か教えてもらえますか?

編集:streambufヘッダー ファイルを見ると、basic_streambufクラス内に次のプライベート メンバーが見つかります。

_Pfirst探しているアドレスだと思いますが、予想どおり NULL です。

0 投票する
3 に答える
2025 参照

c++ - cout.rdbuf()を使用してバッファを切り替え、元に戻さない場合、何が問題になる可能性がありますか?

著者はこのコードをタイトルで提示しましたA bus error on my platform

文字列「Oops!\n」がファイル「oops.log」に出力されます。コードはcoutのstreambufを復元しませんが、VS2010はランタイムエラーを報告しませんでした。