Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWvistream

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

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

## RWvistream

RWvistream RWvios

### 形式

      #include <rw/vstream.h>

### 説明

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

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

  書式に依存しないストリームの格納の詳細と例については、クラス 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` を設定します。どちらの場合も、文字列はワイドヌル文字で終了します。