バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWvistream

RWvistream RWvios

形式

#include <rw/vstream.h>

説明

クラス RWvistream は抽象基底クラスです。このクラスは、書式に依存せずに、基本型と基本型の配列を取り出すためのインタフェースです。対応する RWvostrem は、基本型を格納するためのインタフェースを提供します。

RWvistreamRWvostream のインタフェースは書式に依存しないので、これらのクラスを使用するユーザーは、変数が実際にはどのように格納あるいは復元されるかを知る必要がありません。これを決定するのは派生クラスの責任です。決定は、オペレーティングシステムに依存しない ASCII 形式 (クラス RWpistreamRWpostream) かバイナリ形式 (クラス RWbistreamRWbostream) を使用して行われます。あるいは、ユーザーが独自の書式を定義することも可能です (たとえば、ネットワークへのインタフェース)。注意すべきことは、RWvistream は抽象基底クラスであるので、実際に目標を達成するための方法は存在しないということです。つまり、ここで説明することは、RWvistreamRWvostream から派生したクラスはどのように動作するものなのかを示すモデルにすぎないのです。

書式に依存しないストリームの格納の詳細と例については、クラス RWvostream を参照してください。

持続性

なし

#include <rw/vstream.h>
void restoreStuff( RWvistream& str) {
   int i;
   double d;
   char string[80];
   str >> i;  // int を復元する
   str >> d;  // double を復元する
   // 80 文字までの文字列を復元する
   str.getString(string, sizeof(string));

   if(str.fail()) cerr << "Oh, oh, bad news.\n";
}

公開デストラクタ

virtual ~RWvistream();

この仮想デストラクタにより、特殊化クラスは、自分が割り当てた資源を解放することができます。

公開演算子

virtual RWvistream&
operator>>(char& c) = 0;

入力ストリームから次の char を獲得し、c に格納します。

virtual RWvistream&
operator>>(wchar_t& wc) = 0;

入力ストリームから次の wchar_t を獲得し、wc に格納します。

virtual RWvistream&
operator>>(double& d) = 0;

入力ストリームから次の double を獲得し、d に格納します。

virtual RWvistream&
operator>>(float& f) = 0;

入力ストリームから次の float を獲得し、f に格納します。

virtual RWvistream&
operator>>(int& i) = 0;

入力ストリームから次の int を獲得し、i に格納します。

virtual RWvistream&
operator>>(long& l) = 0;

入力ストリームから次の long を獲得し、l に格納します。

virtual RWvistream&
operator>>(short& s) = 0;

入力ストリームから次の short を獲得し、s に格納します。

virtual RWvistream&
operator>>(unsigned char& c) = 0;

入力ストリームから次の unsigned char を獲得し、c に格納します。

virtual RWvistream&
operator>>(unsigned short& s) = 0;

入力ストリームから次の unsigned short を獲得し、s に格納します。

virtual RWvistream&
operator>>(unsigned int& i) = 0;

入力ストリームから次の unsigned int を獲得し、i に格納します。

virtual RWvistream&
operator>>(unsigned long& l) = 0;

入力ストリームから次の unsigned long を獲得し、l に格納します。

operator void*();

RWvios から継承します。

公開メンバー関数

virtual int
get() = 0;

入力ストリームから次のバイトを獲得して返し、その値を返します。ファイルの終わりに達すると、EOF を返します。

virtual RWvistream&
get(char& c) = 0;

入力ストリームから次の char を獲得し、その値を c に返します。

virtual RWvistream&
get(wchar_t& wc) = 0;

入力ストリームから次の wchar_t を獲得し、その値を wc に返します。

virtual RWvistream&
get(unsigned char& c) = 0;

入力ストリームから次の unsigned char を獲得し、その値を c に返します。

virtual RWvistream&
get(char* v, size_t N) = 0;

char のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。get は、生の文字を取り出し、「\n」などの特殊文字の変換は行いません。

virtual RWvistream&
get(wchar_t* v, size_t N) = 0;

wchar_t のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。get は、生のワイド文字を取り出し、「\n」などの特殊文字の変換は行いません。

virtual RWvistream&
get(double* v, size_t N) = 0;

N 個の double のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(float* v, size_t N) = 0;

N 個の float のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(int* v, size_t N) = 0;

N 個の int のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(long* v, size_t N) = 0;

N 個の long のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(short* v, size_t N) = 0;

N 個の short のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(unsigned char* v, size_t N) = 0;

N 個の unsigned char のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。このメンバーは、ASCII 数値コードを保持するのであって、それに対応する文字値は保持しないので注意してください。文字列を復元する場合は、関数 getString(char*, size_t) を使用します。

virtual RWvistream&
get(unsigned short* v, size_t N) = 0;

N 個の unsigned short のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(unsigned int* v, size_t N) = 0;

N 個の unsigned int のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
get(unsigned long* v, size_t N) = 0;

N 個の unsigned long のベクトルを獲得し、v で始まる配列に格納します。ストリーム上のデータがなくなった、例外が送出された、あるいはその他の理由から、復元操作が予想外に停止した場合、get は、すでにストリームから取り出したデータを v に格納し、failbit を設定します。

virtual RWvistream&
getString(char* s, size_t N) = 0;

RWvostream::putstring で出力ストリームに格納された文字列を入力ストリームから復元し、s で始まる配列に格納します。文字列の終わりに達するか、あるいは N-1 文字を読み取ると (どちらか早い方で)、この関数は読み取りを停止します。N-1 文字を読み取ったが、N 番目の文字が文字列の終端でない場合は、ストリームの failbit を設定します。どちらの場合も、文字列はヌル文字で終了します。

virtual RWvistream&
getString(wchar_t* ws, size_t N) = 0;

RWvostream::putstring で出力ストリームに格納されたワイド文字列を入力ストリームから復元し、ws で始まる配列に格納します。文字列の終わりに達するか、あるいは N-1 文字を読み取ると (どちらか早い方で)、この関数は読み取りを停止します。N-1 文字を読み取ったが、N 番目の文字が文字列の終端でない場合は、ストリームの failbit を設定します。どちらの場合も、文字列はワイドヌル文字で終了します。