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

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

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

## RWeistream

| ... ios
RWeistream RWbistream ... |
| ... RWvistream RWvios

### 形式

      #include <rw/estream.h>
      RWeistream estr(cin);                  // cin の streambuf を使用して
                                             // RWeistream を作成します

### 説明

  クラス RWeistream は、基底クラス RWbistream を特殊化したクラスで、RWeostream が以前に格納した値を復元します。エンディアンストリーム Rweistream と Rweostream は、可搬なストリーム (RWpistream、Rwpostream) とバイナリストリーム (RWbistream、Rwbostream) 間で効率的な妥協を図ります。ビッグエンディアンとリトルエンディアンの形式の違いや各種整数型のサイズの違いを補正することによって、エンディアンストリームは、値を一連の出力可能文字に変換するストリームサイズのオーバーヘッドを生じることなく、移植性を実現します。たとえば、RWeostream オブジェクトが DOS プログラムに格納したリトルエンディアン形式のデータは、固有のエンディアン形式や整数型のサイズに関係なく、どのマシンの RWeistream オブジェクトでも取り出すことができます。エンディアンストリームは、次のプラットフォームグループで共有するときに正しく動作します。

  - 型 `float` と `double` のサイズと表現 (エンディアン形式とは別に) が共通である
  - 負の整数値の表現に 2 の補数を使用する

  可搬なストリームと同様、型 `char` の変数の格納や検索にも注意が必要です。エンディアンストリーム方式は、メソッドの説明で `char` を文字として扱うことを明記していない限り、`char` を数として扱います。この区別の例については、このマニュアルの RWpostream の項目を参照してください。あるプラットフォームで整数型で格納されたデータが大きすぎて、受信プラットフォームでその型に収まらないことがあります。その場合は、RWeistream の `failbit` が設定されます。

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

### 持続性

  なし

### 例

  ファイル "`data.dat`" を作成する方法については、RWeostream の例を参照してください。

      #include <rw/estream.h>
      #include <fstream.h>
      main()
      {
       ifstream fstr("data.dat");     // 入力ファイルをオープンする
       RWeistream estr(fstr);       // 入力ファイルから RWeistream を作成する
                                    // (DOS の場合、RWeistream estr(fstr, ios::binary)
       int i;
       float f;
       double d;

       estr >> i;                   // バイナリ形式で格納されている int を、サイズやエンディアン形式に
                                    //  関係なく復元する
       estr >> f >> d;             //  float と double を、エンディアン形式に関係なく復元する
      }

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

      RWeistream(streambuf* s);

    streambuf の `s` から RWeistream を作成します。DOS の場合、この streambuf はバイナリモードで作成されていなければなりません。エンディアンストリームが無効の場合、例外 RWStreamErr を送出してください。

      RWeistream(istream& str);

    istream の `str` に関連する streambuf を使用して RWeistream を作成します。DOS の場合、`str` はバイナリモードでオープンされていなければなりません。エンディアンストリームが無効な場合、例外 RWStreamErr を送出してください。

### 公開メンバー関数

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

    クラス RWbistream から継承した関数。

      virtual RWvistream&
      get(wchar_t& wc);

    クラス RWbistream から再定義した関数。入力ストリームから次の `wchar_t` を獲得し、`wc` に格納し、そのストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `wc` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`wchar_t` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。復元が予想外に停止した場合は、`v` になにかを格納して `failbit` を設定します。また、ストリームから得た値のどれかが大きすぎて要素 v に格納できない場合にも `failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`double` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。

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

    クラス RWbistream から再定義した関数。`float` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。

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

    クラス RWbistream から再定義した関数。`int` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。ストリームから得た値のどれかが大きすぎて要素 `v` に格納できない場合も `failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`long` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。ストリームから得た値のどれかが大きすぎて要素 `v` に格納できない場合も `failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`short` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。ストリームから得た値のどれかが大きすぎて要素 `v` に格納できない場合も `failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`unsigned short` のベクトルを獲得し、`v` で始まる配列に格納します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。ストリームから得た値のどれかが大きすぎて要素 `v` に格納できない場合も `failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`unsigned int` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。ストリームから得た値のどれかが大きすぎて要素 `v` に格納できない場合も `failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。`unsigned long` のベクトルを獲得し、`v` で始まる配列に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。復元が予想外に停止した場合、`v` になにかを格納して `failbit` を設定します。ストリームから得た値のどれかが大きすぎて要素 `v` に格納できない場合も、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから文字列を復元し、`s` で始まる配列に格納します。文字列の終わりに達するか、あるいは `N-1` 個の文字を読み取ると (どちらか早い方で) 実行を終了します。後者の場合、ストリームの `failbit` が設定され、文字列の残りの文字はストリームから抽出されて廃棄されます。どちらの場合も、文字列はヌル文字で終了します。文字列のサイズが大きすぎて現在の環境で型 `size_t` の変数で表せない場合は、ストリームの `badbit` が設定され、文字は抽出されません。文字列の要素は、数ではなく、文字として扱われることに注意してください。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `char` を獲得し、`c` に格納します。`c` は、数ではなく、文字として扱われることに注意してください。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `wchar_t` を獲得し `wc` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `wc` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `double` を獲得し、`d` に格納し、ストリームと現在の環境との間のエンディアン形式の違いを補正します。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `float` を獲得し、`f` に格納し、ストリームと現在の環境との間のエンディアン形式の違いを補正します。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `int` を獲得し、`i` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `i` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `long` を獲得し、`l` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `l` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `short` を獲得し、`s` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `s` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `unsigned char` を獲得し、`c` に格納します。`c` は、数ではなく、文字として扱われることに注意してください。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `unsigned short` を獲得し、`s` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `s` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `unsigned int` を獲得し、`i` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `i` に格納できない場合は、`failbit` が設定されます。

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

    クラス RWbistream から再定義した関数。入力ストリームから次の `unsigned long` を獲得し、`l` に格納し、ストリームと現在の環境との間のサイズやエンディアン形式の違いを補正します。ストリームから得た値が大きすぎて `l` に格納できない場合は、`failbit` が設定されます。

      RWeostream::EndianstreamEndian();

    数値のエンディアン形式 (`RWeostream::BigEndian` か `RWeostream::LittleEndian`) を、ストリームで表されるとおりに返します。

      size_t
      streamSizeofInt();

    `int` のサイズを、ストリームで表されるとおりに返します。

      size_t
      streamSizeofLong();

    `long` のサイズを、ストリームで表されるとおりに返します。

      size_t
      streamSizeofShort();

    `short` のサイズを、ストリームで表されるとおりに返します。

      size_t
      streamSizeofSizeT();

    `size_t` のサイズを、ストリームで表されるとおりに返します。

      size_t
      streamSizeofWchar();

    `wchar_t` のサイズを、ストリームで表されるとおりに返します。