バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWpostream
RWpostream RWvostream
RWvios
#include <rw/pstream.h> // cout の streambuf を使用して RWpostream を作成する RWpostream pstr(cout) ;
RWpistream と RWpostream は、対応する streambuf の ASCII 形式の装飾と考えられます。結果をどのマシンにも移植できるように変数のフォーマットおよび文字のエスケープを行います。したがって、よりマシン依存度の強いバイナリ形式版 RWbistream および RWbostream よりも処理速度は遅くなります。RWpistream と RWpostream には対応する streambuf の状態についての情報は保存されないので、istream や ifstream といった streambuf から派生するストリームストリームと自由に切り換えて使えます。
クラス RWpostream と RWpistream の目的は、印刷可能な 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 にストリーム状態を問い合わせることができます。
#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);
RWpostream(ostream& str);
virtual ~RWvostream();
virtual RWvostream& operator<<(const char* s);
virtual RWvostream& operator<<(const wchar_t* ws);
virtual RWvostream& operator<<(char c);
virtual RWvostream& operator<<(wchar_t wc);
virtual RWvostream& operator<<(unsigned char c);
virtual RWvostream& operator<<(double d);
virtual RWvostream& operator<<(float f);
virtual RWvostream& operator<<(int i);
virtual RWvostream& operator<<(unsigned int i);
virtual RWvostream& operator<<(long l);
virtual RWvostream& operator<<(unsigned long l);
virtual RWvostream& operator<<(short s);
virtual RWvostream& operator<<(unsigned short s);
operator void*();
int precision() const;
int precision(int p);
virtual RWvostream& flush();
virtual RWvostream& put(char c);
virtual RWvostream& put(wchar_t wc);
virtual RWvostream& put(unsigned char c);
virtual RWvostream& put(const char* p, size_t N);
virtual RWvostream& put(const wchar_t* p, size_t N);
virtual RWvostream& put(const unsigned char* p, size_t N);
virtual RWvostream& put(const short* p, size_t N);
virtual RWvostream& put(const unsigned short* p, size_t N);
virtual RWvostream& put(const int* p, size_t N);
virtual RWvostream& put(const unsigned int* p, size_t N);
virtual RWvostream& put(const long* p, size_t N);
virtual RWvostream& put(const unsigned long* p, size_t N);
virtual RWvostream& put(const float* p, size_t N);
virtual RWvostream& put(const double* p, size_t N);
virtual RWvostream& putString(const char*s, size_t N);