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

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

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

## RWpistream

  RWpistream RWvistream RWvios

### 形式

      #include <rw/pstream.h>
      RWpistream pstr(cin); // cin の streambuf を使用して
                            // RWpistream を作成する

### 説明

  このクラスは、抽象基底クラス RWvistream を特殊化したクラスで、RWpostream が可搬な ASCII 形式で格納した変数を復元します。

  RWpistream と RWpostream は、対応する streambuf の ASCII 形式版と考えられます。結果をどのマシンにも移植できるように、変数のフォーマットおよび文字のエスケープを行います。したがって、よりマシン依存度の強いバイナリ形式版 RWbistream および RWbostream よりも処理速度は遅くなります。RWpistream と RWposream には対応する streambuf の状態に関する情報が保存されていないので、istream や ifstream などといった streambuf から派生したストリームと自由に切り換えて利用できます。

  メンバー関数 `good()`、`bad()`、`eof()` などを使用して、RWpistream にストリームの状態を問い合わせることができます。

### 持続性

  なし

### 例

  このプログラムの入力ストリームの作成方法については、RWpostream の例を参照してください。

      #include <rw/pstream.h>
      main() {
        // 標準入力を使用するために RWpistream を作成する
        RWpistream pstr(cin);
        int i;
        float f;
        double d;
        char string[80];
        pstr >> i;  // ASCII 形式で格納してある整数を復元する
        pstr >> f >> d;   // 浮動小数点数と倍精度実数を復元する
        pstr.getString(string, 80);  //  文字列を復元する
      }

### 公開コンストラクタ

      RWpistream(streambuf* s);

    `streambuf s` から RWpistream を初期化します。

      RWpistream(istream& str);

    `istream str` に対応した streambuf を使用して RWpistream を初期化します。

### 公開演算子

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `char` を取り出し、それを `c` に格納します。このメンバーは、ストリームから転送された記号文字の値を保存しようと試みます。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `wide char` を取り出し、それを `wc` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `double` を取り出し、それを `d` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `float` を取り出し、それを `f` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `int` を取り出し、それを `i` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `long` を取り出し、それを `l` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `short` を取り出し、それを `i` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `unsigned char` を取り出し、それを `c` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `unsigned short` を取り出し、それを `s` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `unsigned int` を取り出し、それを `i` に格納します。

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

    クラス RWvistream から再定義した関数。入力ストリームから次の `unsigned long` を取り出し、それを `l` に格納します。

      operator void*();

    RWvios から RWvistream 経由で継承した関数。

### 公開メンバー関数

      virtual int
      get();

    クラス RWvistream から再定義した関数。入力ストリームから次の文字を取り出して返します。ファイルの終わりに達すると `EOF` を返します。

      virtual RWvistream&
      get(char& c);

    クラス RWvistream から再定義した関数。次の文字を取り出し、それを `c` に格納します。このメンバーは ASCII 数値コードを保存するだけで、対応する文字記号は保存しません。

      virtual RWvistream&
      get(wchar_t& wc);

    クラス RWvistream から再定義した関数。次のワイド `char` を取り出し、それを `wc` に格納します。

      virtual RWvistream&
      get(unsigned char& c);

    クラス RWvistream から再定義した関数。次の `unsigned` `char` を取り出し、それを `c` に格納します。

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

    クラス RWvistream から再定義した関数。`char` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。このメンバーは ASCII 数値コードを保存するだけで、対応する文字記号は保存しないので注意してください。文字列を復元したい場合、関数 `getString(char*,size_t)` を使用してください。

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

    クラス RWvistream から再定義した関数。ワイド `char` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。このメンバーは ASCII 数値コードを保存するだけで、対応する文字記号は保存しないので注意してください。文字列を復元したい場合、関数 `getString(char*,size_t)` を使用してください。

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

    クラス RWvistream から再定義した関数。`double` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。

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

    クラス RWvistream から再定義した関数。`float` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。

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

    クラス RWvistream から再定義した関数。`int` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。

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

    クラス RWvistream から再定義した関数。`long` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。

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

    クラス RWvistream から再定義した関数。`short` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。

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

    クラス RWvistream から再定義した関数。`unsigned` `char` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。このメンバーは ASCII 数値コードを保存するだけで、対応する文字記号は保存しないので注意してください。文字列を復元したい場合、関数 `getString(char*,size_t)` を使用してください。

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

    クラス RWvistream から再定義した関数。`unsigned` `short` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、`failbit` を設定します。

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

    クラス RWvistream から再定義した関数。`unsigned` `int` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、failbit を設定します。

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

    クラス RWvistream から再定義した関数。`unsigned` `long` ベクトルを取り出し、`v` から始まる配列に格納します。ストリームに利用できるデータがもうないか、例外が送出されたか、またはその他の原因で復元が途中で停止された場合、`get` 関数は獲得できたところまでを `v` に格納し、failbit を設定します。

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

    クラス RWvistream から再定義した関数。入力ストリームから文字列を復元し、`s` から始まる配列に格納します。文字列の終わりに達するか、あるいは `N-1` 文字を読み取ると (どちらか早い方で) 実行を停止します。`N-1` 文字を読み取り、`N` 番目の文字が文字列終端記号でない場合、ストリームの `failbit` が設定されます。どちらの場合も、文字列はヌル文字で終了します。入力ストリームが壊れていた場合は RWExternalErr 型の例外が発生します。

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

    クラス RWvistream から再定義した関数。入力ストリームから文字列を復元し、`ws` から始まる配列に格納します。文字列の終わりに達するか、あるいは `N-1` 文字を読み取ると (どちらか早い方で) 実行を停止します。`N-1` 文字を読み取り、`N` 番目の文字が文字列終端記号でない場合、ストリームの `failbit` が設定されます。どちらの場合も、文字列はワイドヌル文字で終了します。入力ストリームが壊れていた場合は RWExternalErr 型の例外が発生します。