バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWvostream
RWvostream RWvios
#include <rw/vstream.h>
RWvistream と RWvostream のインタフェースは書式に依存していないため、ユーザーが実際の変数の記憶および復元方法を指定する必要はありません。それは派生クラスが決めることです。これは、オペレーティングシステムに依存しない ASCII 形式 (クラス RWpistream と RWpostream)、バイナリ形式 (クラス RWbistream と RWbostream)、またはユーザー独自の形式 (ネットワークとのインタフェースなど) を使用して行われます。このクラスは抽象基底クラスであるため、実際に処理方法を強制する手段はありません。ここでは、RWvistream と RWvostream から派生したクラスがとる動作モデルについて説明しています。
変数を空白で区切る必要はありません。空白やパケットブレーク、あるいは最終的な出力先に合ったもので変数を区切るのは、派生クラスの仕事です。変数は、個々に、あるいは同種データから成るベクトルとして出力ストリームに挿入され、挿入されたときと同じ順序で RWvistream を使用して復元されます。
文字の記憶および検索については、多少説明を必要とします。文字は、英数字、制御文字、あるいはリテラル数を表すものと考えられます。一般に、多重定義された挿入 (<<)、抽出演算子 (>>) は、記号としての意味を持っている文字を格納したり、復元しようとします。つまり、ターゲットマシン上の表現がどのようなものであれ、復帰改行文字を格納すれば復帰改行文字として復元されます。一方、メンバー関数 get() と put() は、文字を数そのものとして扱い、その値を保存します。RWpostream を参照してください。
#include <rw/vstream.h> void storeStuff( RWvostream& str) { int i = 5; double d = 22.5; char string[] = "A string with \t tabs and a newline\n"; str << i; // 整数を格納する str << d; // 倍精度実数を格納する str << string; // 文字列を格納する if(str.fail()) cerr << "Oh, oh, bad news.\n"; } |
virtual ~RWvostream();
virtual RWvostream& operator<<(const char* s) = 0;
virtual RWvostream& operator<<(const wchar_t* ws) = 0;
virtual RWvostream& operator<<(char c) = 0;
virtual RWvostream& operator<<(wchar_t wc) = 0;
virtual RWvostream& operator<<(unsigned char c) = 0;
virtual RWvostream& operator<<(double d) = 0;
virtual RWvostream& operator<<(float f) = 0;
virtual RWvostream& operator<<(int i) = 0;
virtual RWvostream& operator<<(unsigned int i) = 0;
virtual RWvostream& operator<<(long l) = 0;
virtual RWvostream& operator<<(unsigned long l) = 0;
virtual RWvostream& operator<<(short s) = 0;
virtual RWvostream& operator<<(unsigned short s) = 0;
operator void*();RWvios から継承した関数。
virtual RWvostream& flush();
virtual RWvostream& put(char c) = 0;
virtual RWvostream& put(wchar_t wc) = 0;
virtual RWvostream& put(unsigned char c) = 0;
virtual RWvostream& put(const char* p, size_t N) = 0;
virtual RWvostream& put(const wchar_t* p, size_t N) = 0;
virtual RWvostream& put(const unsigned char* p, size_t N) = 0;
virtual RWvostream& put(const short* p, size_t N) = 0;
virtual RWvostream& put(const unsigned short* p, size_t N) = 0;
virtual RWvostream& put(const int* p, size_t N) = 0;
virtual RWvostream& put(const unsigned int* p, size_t N) = 0;
virtual RWvostream& put(const long* p, size_t N) = 0;
virtual RWvostream& put(const unsigned long* p, size_t N) = 0;
virtual RWvostream& put(const float* p, size_t N) = 0;
virtual RWvostream& put(const double* p, size_t N) = 0;
virtual RWvostream& putString(const char*s, size_t N);