Boost Iostream (4)

公開:2006-04-24 00:00
更新:2020-02-15 04:36
カテゴリ:boost,windows,c++

2.1.3. Writing a container_sinkの勉強メモ
・書き込みのみを行うものはSinkと呼ぶ。
・Sinkクラス中には下記の型定義を行う。
-キャラクタタイプを示す、char_type。
-デバイスがサポートするI/O操作を示すcategory
 例)typedef sink_tag category;//書き込みをサポートする。
-std::streamsize write(char_type* s, std::streamsize n)関数を定義する。
--これはsを書き出す
--返却値は実際に書き込んだサイズを返却する。EOFもしくは書き込んだ数が0の場合は-1を返却する。
--ノンブロッキングデバイス...writeメソッドでストリームの書き込み要求サイズよりも、小さいデータを返却する場合があるデバイス。ノンブロッキングデバイスはstd::iostreamとうまく協調できない。
・sourceクラス
-char_typeやcategoryがあらかじめ定義されているヘルパクラス
-使用しない関数のデフォルト定義
・Boost.Iostreamにはfiltering streams や stream buffersのコンストラクタにstd::back_inserterなどのイテレータを指定できる。これによってコンテナに容易に書き込みができる。
push_backの代わりにinsertを使用するboost::iostreams::back_inserterが用意されている。こちらのほうが若干効率が良い。