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

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

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

メンバー関数 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);

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

RWeistream(istream& str);

istreamstr に関連する 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::BigEndianRWeostream::LittleEndian) を、ストリームで表されるとおりに返します。

size_t
streamSizeofInt();

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

size_t
streamSizeofLong();

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

size_t
streamSizeofShort();

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

size_t
streamSizeofSizeT();

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

size_t
streamSizeofWchar();

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