iostreamの継承方法(C++技術メモ)1

C++ 超 技術メモ

iostreamは,入出力のストリームです。
これを継承しているものでは,ファイル入出力のfstreamや
文字列用の istrstream等があります。

しかし,C++には,今となっては,標準であってもおかしくない,
TCP/IP用のネットワークストリームがありません。

C言語やC++プログラマなら,ひたすら探すか,
自分で作り上げるかです。
 まぁ,断念してJavaで作るのも手ですね。
Javaなら,はじめにネットワークありきの言語ですから・・・。

さとーしは,初めのころは send recv等を使って
このC++ストリームは全然使いませんでした。
しかし,いかんせん,固定長の配列に入れたりするので,
HTTPプロトコルやPOP3プロトコルなどを書いているのですが,
なかなかうまくいきません。なんちゃってストリーム

これを継承して,ネットワークソケットをC++ストリームに
してやろうと,iostreamを調べても,何も出てきません(^^;

iostreamは,単に テンプレートのbasic_iostreamのchar型なだけです。
しかも,basic_iostreamは basic_istream と basic_ostream を
多重継承しているだけで,メソッドなんて全然ありません。
ただ単に,basic_istreamと basic_ostreamを1つにまとめただけです。
さらに,basic_istreamとbasic_ostreamは,どちらも basic_iosを
継承しています。
basic_iostream, basic_istreamとbasic_iostreamでは,本体はどれも
basic_ios です。 これらの違いは 「入出力兼用」,「入力専用」および「出力専用」なだけ。
さらに,basic_iosは ios_baseというクラスを継承している。これだけは
テンプレートクラスではない。全てのストリームに共通の部分。
もうひとつ ややこしいことに,実際の入出力処理部分は,
basic_streambufクラスを継承してつくらなければならない。

だが,独自のC++ストリームクラス作成のために
知っておく必要があるのは,basic_streambufクラスの継承の手順の詳細だけだ。
他のクラスの詳細は知る必要は無い。使い方と関係だけ知っていればよい。

この記事へのコメント

この記事へのトラックバック