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

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


RWpostream

RWpostream RWvostream RWvios

形式

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

説明

このクラスは、抽象基底クラス RWvostream を特殊化したクラスで、可搬な (印刷可能) ASCII 形式で変数を格納します。結果は、対応する RWpistream を使用して復元することができます。

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

クラス RWpostreamRWpistream の目的は、印刷可能な ASCII 文字だけを使用して、変数を格納することです。したがって、印刷できない文字は、認識可能な外部表現に変換しなければなりません。さらに、記号としての文字とは何の関係もないビットイメージなどのビット値も使用できます。例を次にあげます。

    RWpostream pstrm(cout);
    char c = '\n';

    pstr << c;     // 復帰改行を格納する
    pstr.put(c);     // 数 10 を格納する
この例では、"pstr << c"c を印刷できない復帰改行記号として扱い、"pstr.put(c)" は c を数そのものの "10" として扱っています。変数は空白で区切ってはなりません。空白を入れるとそのまま解釈され、文字列として読み返されることになります。

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

持続性

なし

このプログラムの結果を読み込む方法については、RWpistream の例を参照してください。ここでは記号 " °" で control-G すなわちベルを表します。

#include <rw/pstream.h>

main() {
  // 標準出力を使用するために RWpostream を作成する
  RWpostream pstr(cout);

  int i = 5;
  float f = 22.1;
  double d = -0.05;
  char string[]
          = "A string with\ttabs,\nnewlines and a o bell.";

  pstr << i;      // ASCII 形式で整数を格納する
  pstr << f << d; // 浮動小数点数と倍精度実数を格納する
  pstr << string; //  文字列を格納する
}

プログラム出力:

5
22.1
-0.05
"A string with\ttabs,\nnewlines and a \x07 bell."

公開コンストラクタ

RWpostream(streambuf* s);

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

RWpostream(ostream& str);

出力ストリーム str に対応した streambuf から RWpostream を初期化します。

公開デストラクタ

virtual ~RWvostream();

この仮想デストラクタにより、特殊化したクラスは割り当てたすべての資源を解放することができます。

公開メンバー関数

virtual RWvostream&
operator<<(const char* s);

クラス RWvostream から再定義した関数。s から始まる文字列を可搬な形式で出力ストリームに格納します。文字列は、ヌル文字で終わるものとみなされています。

virtual RWvostream&
operator<<(const wchar_t* ws);

クラス RWvostream から再定義した関数。ws から始まるワイド文字列を可搬な形式で出力ストリームに格納します。文字列は、ワイドヌル文字で終わるものとみなされています。

virtual RWvostream&
operator<<(char c);

クラス RWvostream から再定義した関数。char c を、可搬な形式で出力ストリームに格納します。c は数ではなく、文字として扱います。このメンバーはストリームから転送される記号文字の値を保存しようとします。

virtual RWvostream&
operator<<(wchar_t wc);

クラス RWvostream から再定義した関数。wide char wc を、可搬な形式で出力ストリームに格納します。wc は数ではなく、文字として扱います。

virtual RWvostream&
operator<<(unsigned char c);

クラス RWvostream から再定義した関数。unsigned char c を可搬な形式で出力ストリームに格納します。c は数ではなく、文字として扱います。

virtual RWvostream&
operator<<(double d);

クラス RWvostream から再定義した関数。double d を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(float f);

クラス RWvostream から再定義した関数。float f を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(int i);

クラス RWvostream から再定義した関数。int i を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(unsigned int i);

クラス RWvostream から再定義した関数。unsigned int i を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(long l);

クラス RWvostream から再定義した関数。long l を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(unsigned long l);

クラス RWvostream から再定義した関数。unsigned long l を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(short s);

クラス RWvostream から再定義した関数。short s を可搬な形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(unsigned short s);

クラス RWvostream から再定義した関数。unsigned short s を可搬な形式で出力ストリームに格納します。

operator void*();

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

公開メンバー関数

int
precision() const;

floatdouble データを書き出すのに使用する現在の設定精度を返します。作成時、精度は RW_DEFAULT_PRECISION (compiler.h で定義) に設定されます。

int
precision(int p);

floatdouble データを書き出すのに使用する精度を変更します。以前の設定精度を返します。作成時、精度は RW_DEFAULT_PRECISION (compiler.h で定義) に設定されます。

virtual RWvostream&
flush();

ストリームバッファの内容を出力にただちに送ります。

virtual RWvostream&
put(char c);

クラス RWvostream から再定義された関数。char c を出力ストリームに格納します。この際、可搬な形式でその値を保存します。このメンバーは ASCII 数値コードを保存するだけで、対応する文字記号は保存しません。

virtual RWvostream&
put(wchar_t wc);

クラス RWvostream から再定義された関数。ワイド文字 wc を出力ストリームに格納します。この際、可搬な形式でその値を保存します。

virtual RWvostream&
put(unsigned char c);

クラス RWvostream から再定義された関数。unsigned char c を出力ストリームに格納します。この際、可搬な形式でその値を保存します。

virtual RWvostream&
put(const char* p, size_t N);

クラス RWvostream から再定義された関数。p から始まる char のベクトルを出力ストリームに格納します。この際、可搬な形式でその値を保存します。文字は、文字列ではなく、数の列としてとして扱われるので注意してください。

virtual RWvostream&
put(const wchar_t* p, size_t N);

クラス RWvostream から再定義された関数。p から始まる char のベクトルを出力ストリームに格納します。この際、可搬な形式でその値を保存します。文字は、文字列ではなく、数の列としてとして扱われるので注意してください。

virtual RWvostream&
put(const unsigned char* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる unsigned char のベクトルを可搬な形式で出力ストリームに格納します。char データの列は、文字列ではなく数の列として扱います。

virtual RWvostream&
put(const short* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる short のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const unsigned short* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる unsigned short のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const int* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる int のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const unsigned int* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる unsigned int のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const long* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる long のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const unsigned long* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる unsigned long の整数ベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const float* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる float のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
put(const double* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる double のベクトルを可搬な形式で出力ストリームに格納します。

virtual RWvostream&
putString(const char*s, size_t N);

s から始まる、ヌル文字を含む文字列を出力文字列に格納します。