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

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 形式で格納した変数を復元します。

RWpistreamRWpostream は、対応する streambuf の ASCII 形式版と考えられます。結果をどのマシンにも移植できるように、変数のフォーマットおよび文字のエスケープを行います。したがって、よりマシン依存度の強いバイナリ形式版 RWbistream および RWbostream よりも処理速度は遅くなります。RWpistreamRWposream には対応する streambuf の状態に関する情報が保存されていないので、istreamifstream などといった 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 型の例外が発生します。