問題タブ [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.

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

c++ - boost :: iostreams :: tee_deviceを使用していますか?

誰かが私を助けることができますか?

私は次のようなことをしようとしています:

ただし、VC9ではコンパイルされません。

誰かがこれを機能させましたか?私はそれを行うために自分のクラスを作ることができることを知っていますが、私は自分が間違っていることを知りたいです。

ありがとう

0 投票する
4 に答える
11622 参照

c++ - シンプルなサーバー/クライアント ブーストの例が機能しない

ブーストを学習し、昼間のサーバー クライアントのをコンパイルしました。例にあるポート 13 を使用できないため、サーバーとクライアントの例でポート番号のみを変更しました。サーバーは正常に動作しますが、クライアントは接続していないようで、エラーは発生しません。

クライアントの入力データは「127.0.0.1」です。

サーバ:

そしてクライアント:

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

c++ - C++「helloworld」ブーストティーサンプルプログラム

BoostC++ライブラリには関数テンプレートティーがあります

クラステンプレートtee_filterとtee_deviceは、すべてのデータが2つの異なる場所に同時に送信されるように、出力シーケンスを分割する2つの方法を提供します。

Boostteeを使用して標準出力および「sample.txt」のようなファイルに出力する完全なC++の例を探しています。

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

c++ - C++ Boost io ストリーム、エラー処理

エラーに関して標準ストリームのようにカスタム ストリームを機能させることは可能ですか? デフォルトでは、例外ではなく、good/fail/bad/eof ビットを使用しますか?

ブースト ドキュメントでは、ストリーム エラーに対して std::failure をスローし、他のエラーを伝播させることについてのみ言及しています (たとえば、バッファーを割り当てようとすることによる badalloc)。ただし、ブースト コードはこれらをキャッチしていないようで、代わりにユーザー コードの処理に依存しています。それらですが、私の既存のコードはすべて、エラー後に再試行する必要がある場合に備えて、good()、bad() などのメソッドと clear() メソッドに依存しています。

0 投票する
4 に答える
8564 参照

c++ - boost::iostreams で圧縮ファイルを抽出する

boost::iostreams クラスを使用して、C++ でファイルを抽出する方法を探しています。

ブーストのドキュメントに例があります。ただし、圧縮ファイルの内容を std::cout に出力します。ファイル構造に抽出する方法を探しています。

誰もそれを行う方法を知っていますか?

ありがとう!

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

c++ - ブースト iostream を使用して 4GB を超えるファイルをシーク、読み取り、書き込みする例を誰かが提供できますか

ブースト iostreams は、セミポータブルな方法で大きなファイルへの 64 ビット アクセスをサポートしていると思われることを読みました。彼らの FAQ には64 ビット オフセット関数が記載されていますが、それらの使用方法の例はありません。大きなファイルを処理するためにこのライブラリを使用した人はいますか? 2 つのファイルを開き、中間をシークし、一方を他方にコピーする簡単な例は非常に役に立ちます。

ありがとう。

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

c++ - Boostシリアル化とiostreamを接続して、オブジェクトを文字列にシリアル化およびgzip圧縮する方法は?

私はBoostシリアル化ライブラリを使用してきましたが、これは実際には非常に優れており、次のように、シリアル化可能なオブジェクトを文字列に保存するための単純なラッパーを作成できます。

問題は、シリアル化されたデータも圧縮する必要があることを発見したので、boost::iostreamsのフィルターを使用してそれを行うことを検討しています。私はファイルでそれをうまく行う方法を考え出しました:

しかし、圧縮された文字列に正しく保存する方法を理解することはできません。問題は、フィルターのチェーンをフラッシュしていないことですが、ポップと同期を試しましたが、何も機能しないようです。これが私の壊れたコードです:

その結果、一部のデータがストリームバッファのどこかにスタックし、43K程度であることがわかっている場合、圧縮データの完全なブロック(16Kまたは32K)が常にいくつかあります。私のsaveGZFileメソッド。どうやらofstreamを接続すると、適切に閉じてフラッシュしますが、ostringstreamを接続してもそうではありません。

何か助けはありますか?(これは私の最初のstackoverflowの質問です—助けてください、みんな、あなたは私の唯一の希望です!)

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

c++ - boost::asio および boost::iostreams を使用した非同期のノンブロッキング ファイルのロードに関するヘルプが必要 (または別の何か?)

私は c++ でコーディングしており、画像ファイルを非同期で読み込もうとしています。いくつかの調査の後、boost::asio と boost::iostreams を使用してそれを行うことについての言及がいくつか見つかりました。ただし、boost::asio のドキュメントと例はほとんどがソケット関連であるため、あまり役に立ちません。

必要なものは次のとおりです。

  • ファイルを非同期にロードし、ロード完了時にコールバック関数を実行します。 (私の場合、コールバック関数は v8 JavaScript エンジンを使用して JavaScript 関数オブジェクトを実行します)
  • コールバック関数は、メイン関数と同じスレッド内で実行する必要があります。(v8はスレッドセーフではないため。)
  • Linux と Windows で作業する必要があります。(個別の実装は問題ありません)

したがって、このようなものは本当にいいでしょう:

関数はブロックされるべきではなく、ファイルの読み込みが完了すると、「the_callback_function」を実行する必要があります。

編集: ジョシュペリーが指摘したように、boost::asio はメインスレッドにディスパッチできない可能性があります。したがって、boost::asio と boost:iostreams のみに制限する必要はないと思います。この要件を満たすことができる c/c++ ライブラリは問題ありません。ありがとう!

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

c++ - std :: istreamがstreambufの所有権を引き継がないのはなぜですか?

私は、CRIミドルウェアのROFSのようなビデオゲーム用のある種の仮想ファイルシステムライブラリを書いています(ウィキペディアを参照)。ライブラリでの私の意図は、実行可能ファイルに埋め込まれたデータ、メディア、ローカルユーザーのハードドライブ(設定、ゲームファイルの保存など)に埋め込まれたデータを保存する、開発したゲームのリソースにアクセスする自然な手段を提供することです。 。

このようなリソースへのアクセスは、次のような電話をかけるのと同じくらい簡単である必要があります。

実際のやり方は実際には異なり、バックグラウンドの読み込みに別の抽象化レイヤーが使用されますが、ここでは重要ではありません。

私が知りたいのは、に関連付けられているが破棄されたときに削除されないことを考慮して、それをどのように返すことができるかauto_ptr<>(またはunique_ptr<>、選択した場合)です。std::streambuf<>std::[i/o]stream<>

std::[i/o]stream<>コンストラクターは所有権の転送セマンティクスを提示せず、ApacheのSTDCXX参照は所有権のトランサーについて言及していないため、構築時に渡されたstreambufに対する所有権を想定しないことを検討しています(私が見つけたstdlib参照もありません)インターネット上で)。

どのような選択肢がありますか?共有ポインターを返し、FSlibマネージャーが共有ポインターの一意のコピーを保持するまでそれを監視し続けることもできます。その場合、その一意のコピーとstreambufが破棄されます。図書館の組織モデルを考えると、これは実用的ですが、これはあまりエレガントでも効率的でもありません。

Boost.Iostreamsを見てみましたが、ストリーム自体のデバイスタイプがそのタイプに強く関連付けられているため、状況はさらに悪化しているようです(ストリームのデバイスはテンプレートパラメーターで定義する必要があります) )。この問題により、Boost.Iostreamsをライブラリで使用できなくなったようです。これは、ストリームをシームレスに使用して実行可能ファイル自体の内部にあるファイルを開くことができるように、ストリームの具体的な「ソース/シンク」実装を抽象化する必要があるためです。たとえば、システムのファイルシステムのファイル内、またはアーカイブタイプのファイル内。

これらの問題を処理するコンテナクラスを作成することもできますが、もっとクリーンに実行したいと思います(つまり、すでにストリームを返すだけです。必要なのはそれだけです!;)。

提案?

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

c++ - boost::iostreams を使用して特別に細工されたデータを読み取り、それに基づいてオブジェクトを作成し、リストに追加します

興味深い問題があります。次のように行が満たされたファイルがあるとしましょう:

また、(簡略化された)クラスがあります:

name は、一部のクラス コンストラクターのパラメーター名に対応します。[] 括弧内はオプション、() 内は必須で、{} の間はすべて文字列として渡す必要があります。

最初の行では、名前として「name1」を使用してコンストラクターを呼び出す必要があります。addOptionalParam を 3 回呼び出します。コロンで区切られた項目ごとに 1 回ずつです。また、addMandatoryParam と setData を「テキスト」で 3 回実行します。

私はコメントを行う方法を考え出すことができますが、他のすべては私のために台無しにされています...

今、私はこれがどのように(または)可能であるかについての良いアドバイスが必要です.単純なオブジェクトに対してそれを行う方法を考え出すことができれば、セマンティックの正確さなどの余分な悲惨な詳細をすべて処理する方法を考え出すことができます.