問題タブ [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.
c++ - ストリーム、stream_bufs、codecvtファセット、および\nから\r\nへの変換
C ++ IOストリームのどの部分\r
を\r\n
変換しますか?それ自体ですか、それともファセットstream_buf
による内部から外部へのエンコーディング変換の一部ですか?codecvt
更新1
あなたは皆、それがstreambuf/filebufで行われると言います。Ok。しかし、この配置は、たとえばUTF-16のような外部エンコーディングをどのように処理しますか?ios::binary
次に、翻訳を無効にするフラグを付けてファイルを開く必要があるようです。
c++ - C++: std::istream 読み取りとその std::streambuf アンダーフローへの呼び出し
次のコードは、 を で使用するunderflow
ときに が呼び出される頻度を単純にテストします。std::istream
read
std::stringbuf
出力は次のとおりです。
get 領域に存在するバイト数を正確に読み取ったため、アンダーフローは 1 回だけ呼び出されると予想していましたが、なぜ再びアンダーフローする必要があるのでしょうか。これは予想される動作ですか?私のカスタムunderflow
メソッドは、新しいデータを読み取るために長時間ブロックされる可能性があるため、質問してunderflow
います。この場合、2 番目の呼び出しはあまり望ましくありません。
私はclang 3.1とlibc++を使用して Osx を使用しています。
ありがとうございました!
アップデート:
私は完全に別のテストを作成しましたが、これはlibstd++ では発生しないため、これはlibc++実装の奇妙さのように思えます。誰かが他の実装でこれをテストできますか? これはバグですか、それとも単なる実装の違いですか (私にはかなりバグがあるように感じます)。上記のコードを更新して、任意の main.cpp にコピー アンド ペーストできるようにしました。
アップデート2:
結局、これは libc++ のバグでした。 http://llvm.org/bugs/show_bug.cgi?id=13113を参照してください。自分で libc++ をコンパイルすれば、バグはなくなるはずです。すぐに試してみます。
c++ - cout a stringstreamが2回破損したcoutになります(最小限の例)
私は次のコードを持っていますが、結果が次のようになる理由がよくわかりません。
出力:
残りはどこにありますか??¿上記の行のコメントを外した場合にのみ出力されます...内部で何が起こりますか?誰か知っていますか?=)おもしろいでしょう...
c++ - Boost.Asio streambuf: streambuf にデータをコピーする方法
重複の可能性:
streambuf の内容を文字列にコピーする
最近、boost::asio::streambuf に取り組んでいます。私は英語が下手なので、自分の言いたいことを表現できません。というわけで、まずは以下のコードを見てください。
#1 で、データが から読み取られbuf
、 に格納されbdata
ます。
これにより、 に保存されているデータがbdata
から削除されbuf
ます。streambuf からデータを取得したいのですが、streambuf の内容をまったく変更したくありません。
streambuf には大量のデータがあり、必要なデータは streambuf の先頭にあります。
出来ますか?ありがとうございました。
c++ - クラスを介したC++でのstreambufを使用したバイナリデータの読み取り
私はc++で私の人生の新しい段階を始めようとしているacプログラマーです(私はまだ以下のprintfを使用していることを知っていますが、それはフォーマットがとても簡単だからです)。オブジェクトのメンバー関数からデータファイルの最初のバイトを出力しようとしています。データを読み取る前にストリームバッファが破棄されていると思いますが、どうすればよいかわかりません。
私のクラスは次のようになります
私のコンストラクターはファイルを開き、バッファーを取り出し、最初のバイトを出力して戻ります。(私pbuf
はこのコードの終わりで死にかけていると思います)。このコードは出力しますFirst Byte (in constructor): 0x8C
私の読み取りヘッダーは最初のバイトをダンプしていますが、出力に基づいてすべてが表示されますFirst Byte (in readHeader): 0xFF
私のメインは単にパーサーを作成し、readHeaderを試みます
私の問題の解決策はストリームバッファを作成することだと思いますが、私にnew
はnew streambuf(file.rdbuf())
うまくいきません。何かアドバイス?
c++ - boost :: asio :: streambufは縮小してフィットしますか?
boost :: asio :: streambufのサイズは、consume()が呼び出されるまで増加し続けます。
消費()が呼び出された後でも、基になるバッファによって使用されているメモリが解放されることはありません。
例:次のコードは、max_sizeを指定せずに最初にstreambufを作成しました。次に、14Mbのデータをstreambufにダンプします。次に、それらすべての14MBのデータを消費します。ポイント2000では、streambuf.size()は0ですが、「top」は、プロセスがまだ14MBのRAMを使用していることを示しています。
max_sizeを指定したくありません。とにかくそれが空になった後にstreambufを縮小することはありますか?
c++ - POD 以外のタイプのストリームを作成することは可能ですか?
C++ では、独自の実装を使用して、POD 以外のタイプのオブジェクトのストリームを作成する必要がありますstd::basic_streambuf<Type>
。予想されるときにオブジェクトを構築/破棄するために標準ライブラリが必要ですか?
c++ - istreambuf_iterator による反復後の文字列ストリームの再利用
istreambuf_iterator
そのようなイテレータを必要とする関数に a の周りにラッパーを渡す場合stringstream
、ヒープ割り当てをトリガーせずに、関数が戻った後にストリームの既存のバッファを再利用 (上書き) するにはどうすればよいですか?
(clear
新しい文字が挿入されると再割り当てが発生するようです。)
c++ - streambuf クラスのどのメンバーが、メモリ内の実際のバッファーを指していますか?
この質問は私の以前の質問に関連しています。以下のコードを使用して、 にstreambuf
関連付けられたオブジェクトの値を調べましたcout
。VS2010 IDE を使用すると、このクラスにいくつかのメンバーが表示されます。これらのメンバーのどれがメモリ内の cout の null バッファを指しているのか、誰か教えてもらえますか?
編集:streambuf
ヘッダー ファイルを見ると、basic_streambuf
クラス内に次のプライベート メンバーが見つかります。
_Pfirst
探しているアドレスだと思いますが、予想どおり NULL です。
c++ - cout.rdbuf()を使用してバッファを切り替え、元に戻さない場合、何が問題になる可能性がありますか?
著者はこのコードをタイトルで提示しましたA bus error on my platform
文字列「Oops!\n」がファイル「oops.log」に出力されます。コードはcoutのstreambufを復元しませんが、VS2010はランタイムエラーを報告しませんでした。