2012-06-23から1日間の記事一覧

file_source, sinkとfile_descriptor_source, sink

使用する上で目立った違いは、改行コードの扱いでした。file_source, sinkは、ファイル読み込みの際、改行コード"\r\n"を"\n"に変換します。 そして書き込む際、"\n"を"\r\n"に変換して出力します。 これはstd::ifstream, ofstreamと同じ動作です。file_desc…

STLコンテナをSink/Sourceとして使う

Iostreamsでは、コンテナを入力元(Source)、出力先(Sink)として使うことができます。 Sourceとして使うには、boost::make_iterator_range関数を、 また、Sinkとして使うには、boost::iostreams::back_inserter関数を使います。 ファイルに書き出したりせず、…

stream, filtering_streamのコンストラクタとパイプライン

これらのコンストラクタはいくつかオーバーロードされてるのですが、 なるべく短いコードで書きたい(I/Oが行える状態にしたい)です。書きましょう。streamのコンストラクタ引数は、Deviceのコンストラクタ引数と同じものを取ります。 namespace io = boost::…

すぐにフィルタ処理を終えたいときはboost::iostreams::closeを使う

filtering_ostream::flushを呼び出すことで処理が完了すると思っていたのですが、そうでない場合がありました。 #include <iostream> #include <vector> #include <boost/iostreams/filtering_stream.hpp> #include <boost/iostreams/filter/gzip.hpp> #include <boost/iostreams/device/back_inserter.hpp> #include <boost/iostreams/copy.hpp> int main(){ namesp…</boost/iostreams/copy.hpp></boost/iostreams/device/back_inserter.hpp></boost/iostreams/filter/gzip.hpp></boost/iostreams/filtering_stream.hpp></vector></iostream>