問題タブ [boost-iostreams]
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++ - boost::iostreams::file_descriptor_source を使用してファイルを読み取る方法は?
アプリで boost::iostreams::file_descriptor::handle_type を使用する必要があります。次のコードを使用してファイルを読み取ろうとしましたが、while ループでループし続けます (in.readsome() は 0 を返します)。
using namespace boost::iostreams;
c++ - boost::iostreams と zlib を使用して .gz ファイルを読み取る実行時エラー
boost::iostreams を使用して、.gz ファイルを読み取り、テキスト コンテンツを画面に出力しようとしています。これは、このライブラリについて学ぶための簡単な実験であり、IMDb (ftp://ftp.fu-berlin.de/pub/misc/movies/database/) の「directors.list.gz」ファイルを次のように使用しています。私の入力ファイル。
私のコードは MSVC-10 経由でコンパイルされますが、実行時にプロセスが中止されます。エラー コードが R6010 であることを除いて、エラー メッセージから得られる情報はあまりありません。
これを引き起こした原因と、これを機能させるにはどうすればよいかについて、誰かが私に指示してもらえますか?
このライブラリはかなりきれいに見え、正しく使用したいと思っています。助けてくれてどうもありがとう。
c++ - boost :: asioTCP接続をブロックするためのboost:: iostreams(双方向)デバイスはありますか?
ファイルシステムとネットワークへのI/OアクセスをブロックするポータブルなC++ライブラリを調査しています。のように見えboost::filesystem
、3人の間で仕事をしますboost::iostreams
。boost::asio
明確にするために、私は現在、boost::asio
;の非同期の側面には興味がありません。ネットワークへのポータブルなブロッキングインターフェイスが必要です。
掘り下げてみると、boost::iostreams
デバイスの概念があり、それぞれに関連するモードの概念があります。双方向モードは、特に全二重TCP接続へのストリーミングアクセス用に手動で調整されているように見えます。素晴らしい。
boost::iostreams
(ローカルファイルシステムとは異なり)実際にTCP接続を開くためのサポートを提供していないようです。それで問題ありboost::asio
ません。確かに、接続を開き、双方向として適切にモデル化しDevice
、でラップすることができboost::iostreams::stream
ます。
..そうでないことを除いて?が表示されますboost::asio::ip::tcp::iostream
。これは、に置き換わるものboost::iostreams::stream
ですが、おそらくとしては機能しませんDevice
。
が同じように動作することは理解していますtcp::iostream
が、それでも2つではなく、1つのインターフェイスに対して学習してコーディングしたいと思います。具体的には、2つのエラー処理レジームと例外階層を処理することはあまり口に合いません。
だから、質問:私は盲目ですか?たぶん、2つのライブラリの間にアダプタが存在しますが、それは私がぐるぐる回ることを逃しました。あるいは、誰かが私が立ち寄ることができるサードパーティのコンポーネントなどのアダプタをすでにリリースしているのでしょうか?
c++ - Boost.Process 0.5でプログラムの終了をストリームの終わりにバインドする方法は?
Boost.Process 0.5 ( http://www.highscore.de/boost/process0.5/index.html ) のこの簡単な例では、プログラムの出力 ( ls
) がストリームに供給されています。ストリームは正常に動作しますが、期待に反して、プログラムの終了後にストリームが無効になりません (ストリームの終わりなど) (Boost.Process の以前のバージョンと同様に、http: //www.highscore.de/boost など)。 /プロセス/index.html )
is
子プログラムの終了後にストリーム (例では) を自動的に無効にするために何が欠けていますか?
おそらく、の Boost.Streams に設定する必要があるオプションstream
ですかfile_descriptor
?
c++ - 圧縮ファイルにバイナリデータを書き込む方法
C++で処理している財務データがいくつかあります。必要なリソースが少なく、高速であるため、単純なバイナリ形式で保存していますが、ファイルに圧縮を追加したいと思います。私はIOバウンドになると思いますので、圧縮は処理速度の点でそれほどコストがかかりません。
私は学者であり、実際のプログラマーではないため、圧縮の方法がわかりません。私はこれを持っている手を本当に使うことができました。
次のようにバイナリファイルに書き込むことができます。
tbinがTradesBinデータで満たされている場所。
これらのファイルに圧縮を追加するにはどうすればよいですか?ZLO、Bzip2、zlib、Boost.IOStreamsなどについては漠然としか聞いていません。私はあなたの指導と提案に感謝します!
ありがとうございました!
c++ - bzip を使用して iostream をブーストする - 未解決のシンボル
私のプロジェクトは、古いバージョンの Boost の iostreams w/bzip2 を使用していました。現在、Boost 1.51 にアップグレードしようとしています。最初は bzip でコンパイルしなかったので、明らかにリンカが libboost_bzip2-vc100-mt-sgd-1_51.lib が見つからないことを叫んでいました。次に、これらの指示に従って(そして static フラグを追加して)、このファイルをコンパイルしました。
ただし、リンカーを実行すると、不足している一連のシンボルが返されるようになりました。
ライブラリにこのコードがすべて含まれていない理由はありますか? 私は何が欠けていますか?WindowsでVS2010を使用しています。
編集:わかりました!
bzip なしでコンパイルされた libboost_iostreams-vc100-mt-sgd-1_51.lib の古いバージョンがありました。私がまだ確信していないのはこれです:私が使用した元の編集のために:
これにより、次のファイルが作成されました。
「正しい」コンパイル(問題を解決した)には、次を使用しました。
つまり、私にとっては不要だったので、単純に zlib を削除しました。それは生産しました:
元のコンパイルで iostream ライブラリが生成されなかったのはなぜですか? 非常に奇妙な。
ありがとう。
gdb - boost::iostreams の使用時に警告メッセージ RTTI シンボルが見つかりません
Boost::iostreams を使用して、コンソールとファイルに同時に書き込みます。Eclipse を使用して (もちろん gdb を使用して) デバッグすると、Boost::iostreams から使用しているクラスの 1 つに RTTI シンボルが見つからないという警告が表示されます。
問題を再現するための最小限のコードを次に示します。
デバッグ中に境界線を越えるとTeeStream cool_cout(my_tee);
、次の警告が表示されます。
オブジェクト cool_cout が検出されるたびに、警告が繰り返されます。これを修正するにはどうすればよいですか? もちろん、このコードを使用するプログラムは機能し、問題はありません。警告は無視されるべきではなく、RTTI シンボルについての知識を得る必要があります。(私は -f nortti でコンパイルできず、実行可能ファイルは、iostreams を使用するには rtti を確実に有効にする必要があると不平を言います)
c++ - boost::iostreams によって圧縮された文字列の長さ
(固定長の) 文字列を圧縮してから、圧縮した長さを比較する必要があります (データの冗長性のプロキシとして、またはコルモゴロフの複雑さの大まかな近似として)。現在、圧縮にboost::iostreamsを使用していますが、うまく機能しているようです。ただし、圧縮データのサイズを取得する方法がわかりません。誰か助けてくれませんか?
コードスニペットは
c++ - ビットストリーム I/O の Boost.Iostreams と iostream/streambuf のオーバーロード
私の現在のタスクでは、(主にファイル ベースの) ビットストリームを読み書きする可能性が必要です。標準の C/C++ でコーディングされている場合、これは多かれ少なかれ些細な作業ですが、標準の STL iostream などをオーバーロードして使用することにより、より一般的なアプローチを使用してコードに書き直したいので、次のようなものを書くことができます
ただし、どの道に進むべきかわかりません。
- Boost.IOStream または
- streambuf または iostream から直接派生します。
これまでのところ、独自のストリーム クラスを派生/提供する必要はありませんでしたが、知識を向上させたい...
たぶん、誰かがどちらを好むか、そしてその理由をいくつかの指針やヒントを提供できるでしょう!?
ありがとう!
c++ - ブースト::iostream::ストリームEOF を設定しません
サンプル:
ここでは memstream を char 配列で初期化していますが、while ループは決して終了しません。何が問題ですか ?
編集:ストリームの読み取りメソッドを使用すると、期待どおりに機能します。それ以外 (演算子 >> を含む) を使用しても問題ありません