7.5.1 ストリーム入出力用クラスライブラリ

ストリーム入出力用クラスライブラリに対応するヘッダファイルは以下の通りです。

-

<ios>

入出力用書式設定、入出力状態管理を行うデータメンバおよび関数メンバを定義します。

iosクラスの他に、Initクラス、ios_baseクラスを定義します。

-

<streambuf>

ストリームバッファに対する関数を定義します。

-

<istream>

入力ストリームからの入力関数を定義します。

-

<ostream>

出力ストリームへの出力関数を定義します。

-

<iostream>

入出力関数を定義します。

-

<iomanip>

引数を持つマニピュレータを定義します。

これらのクラスの派生関係は次のようになります。矢印は、派生クラスから基底クラスを参照していることを示します。なお、streambufクラスには派生関係はありません。

 

ストリーム入出力用クラスライブラリで共通に使用される型名を示します。

種別

定義名

説明

streamoff

long型で定義された型です。

streamsize

size_t型で定義された型です。

int_type

int型で定義された型です。

pos_type

long型で定義された型です。

off_type

long型で定義された型です。

(a)

ios_base::Initクラス

種別

定義名

説明

変数

init_cnt

ストリーム入出力オブジェクト数をカウントする静的データメンバです。

低水準インタフェースで0に初期化する必要があります。

関数

Init()

コンストラクタです

~Init()

デストラクタです。

ios_base::Init::Init()

クラスInitのコンストラクタです。

init_cntをインクリメントします。

ios_base::Init::~Init()

クラスInitのデストラクタです。

init_cntをデクリメントします。

(b)

ios_baseクラス

種別

定義名

説明

fmtflags

フォーマット制御情報を表す型です。

iostate

ストリームバッファの入出力状態を表す型です。

openmode

ファイルのオープンモードを表す型です。

seekdir

ストリームバッファのシーク状態を表す型です。

変数

fmtfl

書式フラグです。

wide

フィールド幅です。

prec

出力時の精度(小数点以下の桁数)です。

fillch

詰め文字です。

関数

void _ec2p_init_base()

初期化します。

void _ec2p_copy_base(
ios_base&ios_base_dt)

ios_base_dtをコピーします。

ios_base()

コンストラクタです。

~ios_base()

デストラクタです。

fmtflags flags() const

書式フラグ(fmtfl)を参照します。

fmtflags flags(fmtflags fmtflg)

fmtflg&書式フラグ(fmtfl)を書式フラグ(fmtfl)に設定します。

fmtflags setf(fmtflags fmtflg)

fmtflgを書式フラグ(fmtfl)に設定します。

fmtflags setf(
fmtflags fmtflg,
fmtflags mask)

mask&fmtflgを書式フラグ(fmtfl)に設定します。

void unsetf(fmtflags mask)

~mask&書式フラグ(fmtfl)を書式フラグ(fmtfl)に設定します。

char fill() const

詰め文字(fillch)を参照します。

char fill(char ch)

chを詰め文字(fillch)に設定します。

int precision() const

精度(prec)を参照します。

streamsize precision(
streamsize preci)

preciを精度(prec)に設定します。

streamsize width() const

フィールド幅(wide)を参照します。

streamsize width(streamsize wd)

wdをフィールド幅(wide)に設定します。

ios_base::fmtflags

入出力に関するフォーマット制御情報を定義します。

fmtflagsの各ビットマスクの定義は以下のようになります。

const ios_base::fmtflags ios_base::boolalpha = 0x0000;

const ios_base::fmtflags ios_base::skipws = 0x0001;

const ios_base::fmtflags ios_base::unitbuf = 0x0002;

const ios_base::fmtflags ios_base::uppercase = 0x0004;

const ios_base::fmtflags ios_base::showbase = 0x0008;

const ios_base::fmtflags ios_base::showpoint = 0x0010;

const ios_base::fmtflags ios_base::showpos = 0x0020;

const ios_base::fmtflags ios_base::left = 0x0040;

const ios_base::fmtflags ios_base::right = 0x0080;

const ios_base::fmtflags ios_base::internal = 0x0100;

const ios_base::fmtflags ios_base::adjustfield = 0x01c0;

const ios_base::fmtflags ios_base::dec = 0x0200;

const ios_base::fmtflags ios_base::oct = 0x0400;

const ios_base::fmtflags ios_base::hex = 0x0800;

const ios_base::fmtflags ios_base::basefield = 0x0e00;

const ios_base::fmtflags ios_base::scientific = 0x1000;

const ios_base::fmtflags ios_base::fixed = 0x2000;

const ios_base::fmtflags ios_base::floatfield = 0x3000;

const ios_base::fmtflags ios_base::_fmtmask = 0x3fff;

 

ios_base::iostate

ストリームバッファの入出力状態を定義します。

iostateの各ビットマスクの定義は以下のようになります。

const ios_base::iostate ios_base::goodbit = 0x0;

const ios_base::iostate ios_base::eofbit = 0x1;

const ios_base::iostate ios_base::failbit = 0x2;

const ios_base::iostate ios_base::badbit = 0x4;

const ios_base::iostate ios_base::_statemask = 0x7;

 

ios_base::openmode

ファイルのオープンモードを定義します。

openmodeの各ビットマスクの定義は以下のようになります。

const ios_base::openmode ios_base::in = 0x01; 入力用のファイルをopenします。

const ios_base::openmode ios_base::out = 0x02; 出力用のファイルをopenします。

const ios_base::openmode ios_base::ate = 0x04; オープン後一度だけeofにseekします。

const ios_base::openmode ios_base::app = 0x08; 書き込む度にeofにseekします。

const ios_base::openmode ios_base::trunc = 0x10; ファイルを上書きモードでopenします。

const ios_base::openmode ios_base::binary = 0x20; ファイルをバイナリモードでopenします。

 

ios_base::seekdir

ストリームバッファのシーク状態を定義します。

引き続き入力または出力を行うためのストリーム内の位置を決定します。

seekdirの各ビットマスクの定義は以下のようになります。

const ios_base::seekdir ios_base::beg = 0x0;

const ios_base::seekdir ios_base::cur = 0x1;

const ios_base::seekdir ios_base::end = 0x2;

 

void ios_base::_ec2p_init_base()

以下の値で初期設定します。

fmtfl = skipws | dec;

wide = 0;

prec = 6;

fillch = ' ';

 

void ios_base::_ec2p_copy_base(ios_base& ios_base_dt)

ios_base_dtをコピーします。

 

ios_base::ios_base()

クラスios_baseのコンストラクタです。

Init::Init()を呼び出します。

 

ios_base::~ios_base()

クラスios_base のデストラクタです。

 

ios_base::fmtflags ios_base::flags() const

書式フラグ(fmtfl)を参照します。

リターン値は、書式フラグ(fmtfl)です。

 

ios_base::fmtflags ios_base::flags(fmtflags fmtflg)

fmtflg&書式フラグ(fmtfl)を書式フラグ(fmtfl)に設定します。

リターン値は、設定前の書式フラグ(fmtfl)です。

 

ios_base::fmtflags ios_base::setf(fmtflags fmtflg)

fmtflgを書式フラグ(fmtfl)に設定します。

リターン値は、設定前の書式フラグ(fmtfl)です。

 

ios_base::fmtflags ios_base::setf(fmtflags fmtflg, fmtflags mask)

mask&fmtflgの値を書式フラグ(fmtfl)に設定します。

リターン値は、設定前の書式フラグ(fmtfl)です。

 

void ios_base::unsetf(fmtflags mask)

~mask&書式フラグ(fmtfl)を書式フラグ(fmtfl)に設定します。

 

char ios_base::fill() const

詰め文字(fillch)を参照します。

リターン値は、詰め文字(fillch)です。

 

char ios_base::fill(char ch)

chを詰め文字として設定します。

リターン値は、設定前の詰め文字(fillch)です。

 

int ios_base::precision() const

精度(prec)を参照します。

リターン値は、精度(prec)です。

 

streamsize ios_base::precision(streamsize preci)

preciを精度(prec)に設定します。

リターン値は、設定前の精度(prec)です。

 

streamsize ios_base::width() const

フィールド幅(wide)を参照します。

リターン値は、 フィールド幅(wide)です。

 

streamsize ios_base::width(streamsize wd)

wdをフィールド幅(wide)に設定します。

リターン値は、設定前の フィールド幅(wide)です。

(c)

iosクラス

種別

定義名

説明

変数

sb

streambufオブジェクトへのポインタです。

tiestr

ostreamオブジェクトへのポインタです。

state

streambufへの状態フラグです。

関数

ios()

コンストラクタです。

ios(streambuf* sbptr)

void init(streambuf* sbptr)

初期設定を行います。

virtual ~ios()

デストラクタです。

operator void*() const

エラー有無(!state&(badbit | failbit))を判定します。

bool operator!() const

エラー有無(state&(badbit | failbit))を判定します。

iostate rdstate() const

状態フラグ(state)を参照します。

void clear(iostate st = goodbit)

指定された状態(st)を除いて状態フラグ(state)をクリアします。

void setstate(iostate st)

stを状態フラグ(state)に設定します。

bool good() const

エラー有無(state==goodbit)を判定します。

bool eof() const

入力ストリームの最後かどうか(state&eofbit)を判定します。

bool bad() const

エラー有無(state&badbit)を判定します。

bool fail() const

入力テキストが要求パターンと不一致であるかどうか(state&(badbit | failbit))判定します。

ostream* tie() const

ostreamオブジェクトへのポインタ(tiestr)を参照します。

ostream* tie(ostream* tstrptr)

tstrptrをostreamオブジェクトへのポインタ(tiestr)に設定します。

streambuf* rdbuf() const

streambufオブジェクトへのポインタ(sb)を参照します。

streambuf* rdbuf(streambuf* sbptr)

sbptrをstreambufオブジェクトへのポインタ(sb)に設定します。

ios& copyfmt(const ios& rhs)

rhsの状態フラグ(state)をコピーします。

ios::ios()

クラスiosのコンストラクタです。

init(0)を呼び出し、初期値をそのメンバオブジェクトに設定します。

 

ios::ios(streambuf* sbptr)

クラスiosのコンストラクタです。

init(sbptr)を呼び出し、初期値をそのメンバオブジェクトに設定します。

 

void ios::init(streambuf* sbptr)

sbptrをsbに設定します。

state、tiestrを0に設定します。

 

virtual ios::~ios()

クラスiosのデストラクタです。

 

ios::operator void*() const

エラー有無(!state&(badbit | failbit))を判定します。

リターン値は次のとおりです。

エラー有の場合:false

エラー無の場合:true

 

bool ios::operator!() const

エラー有無(state&(badbit | failbit))を判定します。

リターン値は次のとおりです。

エラー有の場合:true

エラー無の場合:false

 

iostate ios::rdstate() const

状態フラグ(state) を参照します。

リターン値は、状態フラグ(state)です。

 

void ios::clear(iostate st = goodbit)

指定された状態(st)を除いて状態フラグ(state)をクリアします。

streambufオブジェクトへのポインタ(sb)が0のときは、状態フラグ(state)にbadbitを設定します。

 

void ios::setstate(iostate st)

stを状態フラグ(state)に設定します。

 

bool ios::good() const

エラー有無(state==goodbit)を判定します。

リターン値は次のとおりです。

エラー有の場合:false

エラー無の場合:true

 

bool ios::eof() const

入力ストリームの最後かどうか(state&eofbit)を判定します。

リターン値は次のとおりです。

入力ストリームの最後の場合 :true

入力ストリームの最後以外の場合:false

 

bool ios::bad() const

エラー有無(state&badbit)を判定します。

リターン値は次のとおりです。

エラー有の場合:true

エラー無の場合:false

 

bool ios::fail() const

入力テキストが要求パターンと不一致であるかどうか(state&(badbit | failbit))を判定します。

リターン値は次のとおりです。

不一致の場合:true

一致の場合 :false

 

ostream* ios::tie() const

ostreamオブジェクトへのポインタ(tiestr)を参照します。

リターン値は、ostreamオブジェクトへのポインタ(tiestr)です。

 

ostream* ios::tie(ostream* tstrptr)

tstrptrをostreamオブジェクトへのポインタ(tiestr)に設定します。

リターン値は、設定前のostreamオブジェクトへのポインタ(tiestr)です。

 

streambuf* ios::rdbuf() const

streambufオブジェクトへのポインタ(sb)を参照します。

リターン値は、streambufオブジェクトへのポインタ(sb)です。

 

streambuf* ios::rdbuf(streambuf* sbptr)

sbptrをstreambufオブジェクトへのポインタ(sb)に設定します。

リターン値は、設定前のstreambufオブジェクトへのポインタ(sb)です。

 

ios& ios::copyfmt(const ios& rhs)

rhsの状態フラグ(state)をコピーします。

リターン値は*thisです。

(d)

iosクラスマニピュレータ

種別

定義名

説明

関数

ios_base& showbase(ios_base& str)

基数表示接頭辞モードに設定します。

ios_base& noshowbase(

ios_base& str)

基数表示接頭辞モードをクリアします。

ios_base& showpoint (ios_base& str)

小数点生成モードに設定します。

ios_base& noshowpoint (
ios_base& str)

小数点生成モードをクリアします。

ios_base& showpos(ios_base& str)

+記号生成モードに設定します。

ios_base& noshowpos(ios_base& str)

+記号生成モードをクリアします。

ios_base& skipws(ios_base& str)

空白読み飛ばしモードに設定します。

ios_base& noskipws(ios_base& str)

空白読み飛ばしモードをクリアします。

ios_base& uppercase(ios_base& str)

大文字変換モードに設定します。

ios_base& nouppercase(
ios_base& str)

大文字変換モードをクリアします。

ios_base& internal(ios_base& str)

内部補充モードに設定します。

ios_base& left(ios_base& str)

左側補充モードに設定します。

ios_base& right(ios_base& str)

右側補充モードに設定します。

ios_base& dec(ios_base& str)

10進モードに設定します。

ios_base& hex(ios_base& str)

16進モードに設定します。

ios_base& oct(ios_base& str)

8進モードに設定します。

ios_base& fixed(ios_base& str)

固定小数点モードに設定します。

ios_base& scientific(ios_base& str)

科学表記法モードに設定します。

ios_base& showbase(ios_base& str)

データのはじめに基数を表示させるモードに設定します。

16進数のときは、0xを行の先頭に付加します。10進数のときは、そのまま出力します。

8進数のときは、0を行の先頭に付加します。

リターン値はstrです。

 

ios_base& noshowbase(ios_base& str)

データのはじめに基数を表示させるモードをクリアします。

リターン値はstrです。

 

ios_base& showpoint(ios_base& str)

小数点を出力するモードに設定します。

精度の指定がない場合、小数点以下6桁で表示します。

リターン値はstrです。

 

ios_base& noshowpoint(ios_base& str)

小数点を出力するモードをクリアします。

リターン値はstrです。

 

ios_base& showpos(ios_base& str)

+記号生成出力モード(正の数に対して+の符号を付加)に設定します。

リターン値はstrです。

 

ios_base& noshowpos(ios_base& str)

+記号生成出力モードをクリアします。

リターン値はstrです。

 

ios_base& skipws(ios_base& str)

空白読み飛ばし入力モード(連続する空白をスキップ)に設定します。

リターン値はstrです。

 

ios_base& noskipws(ios_base& str)

空白読み飛ばし入力モードをクリアします。

リターン値はstrです。

 

ios_base& uppercase(ios_base& str)

大文字変換出力モードに設定します。

16進の基数表現が大文字の0Xになり、数値自体も大文字になります。

浮動小数点の指数表現も大文字のEになります。

リターン値はstrです。

 

ios_base& nouppercase(ios_base& str)

大文字変換出力モードをクリアします。

リターン値はstrです。

 

ios_base& internal(ios_base& str)

フィールド幅(wide)の範囲で出力時に

符号、基数

詰め文字(fill)

数値

の順で出力します。

リターン値はstrです。

 

ios_base& left(ios_base& str)

フィールド幅(wide)の範囲で出力時に左詰めします。

リターン値はstrです。

 

ios_base& right(ios_base& str)

フィールド幅(wide)の範囲で出力時に右詰めします。

リターン値はstrです。

 

ios_base& dec(ios_base& str)

変換基数を10進モードに設定します。

リターン値はstrです。

 

ios_base& hex(ios_base& str)

変換基数を16進モードに設定します。

リターン値はstrです。

 

ios_base& oct(ios_base& str)

変換基数を8進モードに設定します。

リターン値はstrです。

 

ios_base& fixed(ios_base& str)

固定小数点出力モードに設定します。

リターン値はstrです。

 

ios_base& scientific(ios_base& str)

科学表記法出力モード(指数表記)に設定します。

リターン値はstrです。

(e)

streambufクラス

種別

定義名

説明

定数

eof

ファイル終了を示します。

変数

_B_cnt_ptr

バッファの有効データ長へのポインタです。

B_beg_ptr

バッファのベースポインタへのポインタです。

_B_len_ptr

バッファの長さへのポインタです。

B_next_ptr

バッファの次の読み出し位置へのポインタです。

B_end_ptr

バッファの終端位置へのポインタです。

B_beg_pptr

制御バッファの先頭位置へのポインタです。

B_next_pptr

バッファの次の読み出し位置へのポインタです。

C_flg_ptr

ファイルの入出力制御フラグへのポインタです。

関数

char* _ec2p_getflag() const

ファイル入出力制御フラグのポインタを参照します。

char*& _ec2p_gnptr()

バッファの次の読み出し位置へのポインタを参照します。

char*& _ec2p_pnptr()

バッファの次の書き込み位置へのポインタを参照します。

void _ec2p_bcntplus()

バッファの有効データ長をインクリメントします。

void _ec2p_bcntminus()

バッファの有効データ長をデクリメントします。

void _ec2p_setbPtr(
char** begptr,
char** curptr,
long* cntptr,
long* lenptr,
char* flgptr)




streambufのポインタを設定します。

streambuf()

コンストラクタです。

virtual ~streambuf()

デストラクタです。

streambuf* pubsetbuf(char* s, streamsize n)

ストリーム入出力用のバッファを確保します。この関数ではsetbuf(s,n)*1を呼び出します。

pos_type pubseekoff(
off_type off,
ios _base::seekdir way,
ios_base::openmode
which = ios_base::in | ios_base::out)



wayで指定された方法で入出力ストリームの読み書き位置を移動させます。この関数ではseekoff(off,way,which)*1を呼び出します。

pos_type pubseekpos(
pos_type sp,
ios_base::openmode
which = ios_base::in | ios_base::out)


ストリームの先頭から現在の位置までのオフセットを求めます。この関数ではseekpos(sp,which)*1を呼び出します。

int pubsync()

出力ストリームをフラッシュします。この関数ではsync()*1を呼び出します。

streamsize in_avail()

入力ストリームの最後尾から現在位置までのオフセットを求めます。

int_type snextc()

次の一文字を読み込みます。

int_type sbumpc()

一文字読み込みポインタを次に設定します。

int_type sgetc()

一文字読み込みます。

int sgetn(char* s, streamsize n)

sの指す記憶領域にn個の文字を設定します。

int_type sputbackc(char c)

読み込み位置をプットバックします。

int sungetc()

読み込み位置をプットバックします。

int sputc(char c)

文字cを挿入します。

int_type sputn(const char* s, streamsize n)

sの指すn個の文字を挿入します。

char* eback() const

入力ストリームの先頭ポインタを求めます。

char* gptr() const

入力ストリームの次ポインタを求めます。

char* egptr() const

入力ストリームの最後尾ポインタを求めます。

関数

void gbump(int n)

入力ストリームの次ポインタをn進めます。

void setg(
char* gbeg,
char* gnext,
char* gend)


入力ストリームの各ポインタを代入します。

char* pbase() const

出力ストリームの先頭ポインタを求めます。

char* pptr() const

出力ストリームの次ポインタを求めます。

char* epptr() const

出力ストリームの最後尾ポインタを求めます。

void pbump(int n)

出力ストリームの次ポインタをn進めます。

void setp(char* pbeg, char* pend)

出力ストリームの各ポインタを設定します。

virtual streambuf* setbuf(char* s, streamsize n)*1

派生する各クラスごとに、個別に定義する演算を実行します。

virtual pos_type seekoff(
off_type off,
ios_base::seekdir way,
ios_base::openmode = (ios_base::openmode)
(ios_base::in | ios_base::out))*1



ストリーム位置を変更します。

virtual pos_type seekpos(
pos_type sp,
ios_base::openmode = (ios_base::openmode)
(ios_base::in | ios_base::out)) *1


ストリーム位置を変更します。

virtual int sync()*1

出力ストリームをフラッシュします。

virtual int showmanyc()*1

入力ストリームの有効な文字数を求めます。

virtual streamsize xsgetn(char* s, streamsize n)

sの指す記憶領域にn個の文字を設定します。

virtual int_type underflow()*1

ストリーム位置を動かさずに一文字読み込みます。

virtual int_type uflow()*1

次ポインタの一文字を読み込みます。

virtual int_type pbackfail(int_type c = eof)*1

cによって示される文字をプットバックします。

virtual streamsize xsputn(const char* s,

streamsize n)

sの指すn個の文字を挿入します。

virtual int_type overflow(int_type c = eof)*1

cを出力ストリームに挿入します。

注 1.

このクラスでは処理を定義していません。

 

char* streambuf::_ec2p_getflag() const

ファイル入出力制御フラグのポインタを参照します。

 

char*& streambuf::_ec2p_gnptr()

バッファの次の読み出し位置へのポインタを参照します。

 

char*& streambuf::_ec2p_pnptr()

バッファの次の書き込み位置へのポインタを参照します。

 

void streambuf::_ec2p_bcntplus()()

バッファの有効データ長をインクリメントします。

 

void streambuf::_ec2p_bcntminus()

バッファの有効データ長をデクリメントします。

 

void _ec2p_setbPtr(char** begptr, char** curptr, long* cntptr, long* lenptr, char* flgptr)

streambufのポインタを設定します。

 

streambuf::streambuf()

コンストラクタです。

以下の値で初期化します。

_B_cnt_ptr = B_beg_ptr = B_next_ptr = B_end_ptr = C_flg_ptr = _B_len_ptr = 0

B_beg_pptr = &B_beg_ptr

B_next_pptr = &B_next_ptr

 

virtual streambuf::~streambuf()

デストラクタです。

 

streambuf* streambuf::pubsetbuf(char* s, streamsize n)

ストリーム入出力用のバッファを確保します。

この関数ではsetbuf(s,n)を呼び出します。

リターン値は、*this です。

 

pos_type streambuf::pubseekoff(off_type off, ios _base::seekdir way, ios_base::openmode which = (ios_base::openmode)(ios_base::in | ios_base::out))

wayで指定された方法で入出力ストリームの読み書き位置を移動させます。

この関数ではseekoff(off,way,which)を呼び出します。

リターン値は、新たに設定されたストリームの位置です。

 

pos_type streambuf::pubseekpos(pos_type sp, ios_base::openmode which = (ios_base::openmode)(ios_base::in | ios_base::out))

ストリームの先頭から現在の位置までのオフセットを求めます。

現在のストリームポインタからspだけ移動します。

この関数ではseekpos(sp,which)を呼び出します。

リターン値は、先頭からのオフセットです。

 

int streambuf::pubsync()

出力ストリームをフラッシュします。

この関数ではsync()を呼び出します。

リターン値は0です。

 

streamsize streambuf::in_avail()

入力ストリームの最後尾から現在位置までのオフセットを求めます。

リターン値は次のとおりです。

読み込み位置が有効の場合 :最後尾から現在位置までのオフセット

読み込み位置が無効の場合 :0(showmanyc()を呼び出します)

 

int_type streambuf::snextc()

一文字読み込みます。読み込んだ文字がeofでなければ、次の一文字を読み込みます。

リターン値は次のとおりです。

eofでない場合 :読み込んだ文字

eofの場合 :eof

 

int_type streambuf::sbumpc()

一文字読み込みポインタを次に設定します。

リターン値は次のとおりです。

読み込み位置が無効でない場合 :読み込んだ文字

読み込み位置が無効の場合 :eof

 

int_type streambuf::sgetc()

一文字読み込みます。

リターン値は次のとおりです。

読み込み位置が無効でない場合 :読み込んだ文字

読み込み位置が無効の場合 :eof

 

int streambuf::sgetn(char* s, streamsize n)

sの指す記憶領域にn個の文字を設定します。

文字列中にeofを検出した場合、設定を終了します。

リターン値は、設定した文字数です。

 

int_type streambuf::sputbackc(char c)

読み込み位置が正常で読み込み位置のプットバックデータがcと同一の場合、読み込み位置をプットバックします。

リターン値は次のとおりです。

プットバックできた場合 :cの値

プットバックできなかった場合 :eof

 

int streambuf::sungetc()

読み込み位置が正常である場合、読み込み位置をプットバックします。

リターン値は次のとおりです。

プットバックできた場合 :プットバックした値

プットバックできなかった場合 :eof

 

int streambuf::sputc(char c)

文字cを挿入します。

リターン値は次のとおりです。

書き込み位置が正しい場合 :cの値

書き込み位置が不正な場合 :eof

 

int_type streambuf::sputn(const char* s, streamsize n)

sの指すn個の文字を挿入します。

バッファがnより小さい場合は、バッファサイズ分だけ挿入します。

リターン値は、挿入された文字数です。

 

char* streambuf::eback() const

入力ストリームの先頭ポインタを求めます。

リターン値は、先頭ポインタです。

 

char* streambuf::gptr() const

入力ストリームの次ポインタを求めます。

リターン値は、次ポインタです。

 

char* streambuf::egptr() const

入力ストリームの最後尾ポインタを求めます。

リターン値は、最後尾ポインタです。

 

void streambuf::gbump(int n)

入力ストリームの次ポインタをn進めます。

 

void streambuf::setg(char* gbeg, char* gnext, char* gend)

入力ストリームの各ポインタに、以下の設定を行います。

*B_beg_pptr = gbeg;

*B_next_pptr = gnext;

B_end_ptr = gend;

*_B_cnt_ptr = gend-gnext;

*_B_len_ptr = gend-gbeg;

 

char* streambuf::pbase() const

出力ストリームの先頭ポインタを求めます。

リターン値は、先頭ポインタです。

 

char* streambuf::pptr() const

出力ストリームの次ポインタを求めます。

リターン値は、次ポインタです。

 

char* streambuf::epptr() const

出力ストリームの最後尾ポインタを求めます。

リターン値は、最後尾ポインタです。

 

void streambuf::pbump(int n)

出力ストリームの次ポインタをn進めます。

 

void streambuf::setp(char* pbeg, char* pend)

出力ストリームの各ポインタに、以下の設定を行います。

*B_beg_pptr = pbeg;

*B_next_pptr = pbeg;

B_end_ptr = pend;

*_B_cnt_ptr = pend-pbeg;

*_B_len_ptr = pend-pbeg;

 

virtual streambuf* streambuf::setbuf(char* s, streamsize n)

streambufから派生する各クラスごとに、個別に定義する演算を実行します。

リターン値は*thisです。このクラスでは処理を定義していません。

 

virtual pos_type streambuf::seekoff(off_type off, ios_base::seekdir way, ios_base::openmode = (ios_base::openmode)(ios_base::in | ios_base::out))

ストリーム位置を変更します。

リターン値は-1です。このクラスでは処理を定義していません。

 

virtual pos_type streambuf::seekpos(pos_type sp, ios_base::openmode = (ios_base::openmode)(ios_base::in | ios_base::out))

ストリーム位置を変更します。

リターン値は-1です。このクラスでは処理を定義していません。

 

virtual int streambuf::sync()

出力ストリームをフラッシュします。

リターン値は0です。このクラスでは処理を定義していません。

 

virtual int streambuf::showmanyc()

入力ストリームの有効な文字数を求めます。

リターン値は0です。このクラスでは処理を定義していません。

 

virtual streamsize streambuf::xsgetn(char* s, streamsize n)

sの指す記憶領域にn個の文字を設定します。

バッファがnより小さい場合は、バッファサイズ分だけ設定します。

リターン値は、入力された文字数です。

 

virtual int_type streambuf::underflow()

ストリーム位置を動かさずに一文字読み込みます。

リターン値はeofです。このクラスでは処理を定義していません。

 

virtual int_type streambuf::uflow()

次ポインタの一文字を読み込みます。

リターン値はeofです。このクラスでは処理を定義していません。

 

virtual int_type streambuf::pbackfail(int_type c = eof)

cによって示される文字をプットバックします。

リターン値はeofです。このクラスでは処理を定義していません。

 

virtual streamsize streambuf::xsputn(const char* s, streamsize n)

sの指すn個の文字を挿入します。

バッファがnより小さい場合は、バッファサイズ分だけ挿入します。

リターン値は、挿入された文字数です。

 

virtual int_type streambuf::overflow(int_type c = eof)

cを出力ストリームに挿入します。

リターン値はeofです。このクラスでは処理を定義していません。

(f)

istream::sentryクラス

種別

定義名

説明

変数

ok_

入力可能状態か否かを意味します。

関数

sentry(istream& is, bool noskipws = false)

コンストラクタです。

~sentry()

デストラクタです。

operator bool()

ok_を参照します。

istream::sentry::sentry(istream& is, bool noskipws = _false)

内部クラスsentryのコンストラクタです。

good()が非0の場合、フォーマット付きまたはフォーマットなし入力を可能にします。

tie()が非0の場合、関連する出力ストリームをフラッシュします。

 

istream::sentry::~sentry()

内部クラスsentryのデストラクタです。

 

istream::sentry::operator bool()

ok_を参照します。

リターン値はok_です。

(g)

istreamクラス

種別

定義名

説明

変数

chcount

最後にコールされた入力関数が抽出した文字数です。

関数

int _ec2p_getistr(char* str, unsigned int dig, int mode)

strをdigが示す基数で変換します。

istream(streambuf* sb)

コンストラクタです。

virtual ~istream()

デストラクタです。

istream& operator>>(bool& n)

抽出した文字をnに格納します。

istream& operator>>(short& n)

istream& operator>>(unsigned short& n)

istream& operator>>(int& n)

istream& operator>>(unsigned int& n)

istream& operator>>(long& n)

istream& operator>>(unsigned long& n)

istream& operator>>(long long& n)

istream& operator>>(unsigned long long& n)

istream& operator>>(float& n)

istream& operator>>(double& n)

istream& operator>>(long double& n)

istream& operator>>(void*& p)

voidを指すポインタに変換してpに格納します。

istream& operator>>(streambuf* sb)

文字を抽出し、sbの指す記憶領域へ格納します。

streamsize gcount() const

chcount(抽出文字数)を求めます。

int_type get()

文字を抽出します。

istream& get(char& c)

文字を抽出しcに格納します。

istream& get(signed char& c)

istream& get(unsigned char& c)

istream& get(char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

istream& get(signed char* s, streamsize n)

istream& get(unsigned char* s, streamsize n)

istream& get(char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。文字列内に'delim'を検出したら、入力を終了します。

istream& get(
signed char* s,
streamsize n,
char delim)


istream& get(
unsigned char* s,
streamsize n,
char delim)


関数

istream& get(streambuf& sb)

文字列を抽出し、sbの指す記憶領域に格納します。

istream& get(streambuf& sb, char delim)

文字列を抽出し、sbの指す記憶領域に格納します。途中で文字'delim'を検出したら、入力を終了します。

istream& getline(char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

istream& getline(signed char* s, streamsize n)

istream& getline(unsigned char* s, streamsize n)

istream& getline(char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。途中で文字'delim'を検出したら、入力を終了します。

istream& getline(
signed char* s,
streamsize n,
char delim)


istream& getline(
unsigned char* s,
streamsize n,
char delim)


istream& ignore(
streamsize n = 1,
int_type delim = streambuf::eof)

n個の文字を読み飛ばします。途中で文字'delim'を検出したら、読み飛ばし処理を中止します。

int_type peek()

次の入手可能な入力文字を求めます。

istream& read(char* s, streamsize n)

サイズnの文字列を抽出し、sの指す記憶領域に格納します。

istream& read(signed char* s, streamsize n)

istream& read(unsigned char* s, streamsize n)

streamsize readsome(char* s, streamsize n)

サイズnの文字列を抽出し、sの指す記憶領域に格納します。

streamsize readsome(signed char* s, streamsize n)

streamsize readsome(
unsigned char* s,
streamsize n)

istream& putback(char c)

文字を入力ストリームに戻します。

istream& unget()

入力ストリームの位置を戻します。

int sync()

入力ストリームがあるかどうかを調べます。この関数はstreambuf::pubsync()を呼び出します。

pos_type tellg()

入力ストリームの位置を調べます。この関数はstreambuf::pubseekoff(0,cur,in)を呼び出します。

istream& seekg(pos_type pos)

現在のストリームポインタからposだけ移動します。この関数はstreambuf::pubseekpos(pos)を呼び出します。

istream& seekg(off_type off, ios_base::seekdir dir)

dirで指定された方法で入力ストリームの読み込み位置を移動します。この関数はstreambuf::pubseekoff(off,dir)を呼び出します。

int istream::_ec2p_getistr(char* str, unsigned int dig, int mode)

strをdigが示す基数で変換します。

リターン値は、変換した基数です。

 

istream::istream(streambuf* sb)

クラスistreamのコンストラクタです。

ios::init(sb)を呼び出します。

chcount=0の設定を行います。

 

virtual istream::~istream()

クラスistreamのデストラクタです。

 

istream& istream::operator>>(bool& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(short& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(unsigned short& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(int& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(unsigned int& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(long& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(unsigned long& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(long long& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(unsigned long long& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(float& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(double& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(long double& n)

抽出した文字をnに格納します。

リターン値は*thisです。

 

istream& istream::operator>>(void*& p)

抽出した文字をvoid*型に変換し、pの指す記憶領域に格納します。

リターン値は*thisです。

 

istream& istream::operator>>(streambuf* sb)

文字を抽出し、sbの指す記憶領域に格納します。

抽出文字がない場合は、setstate(failbit)を呼び出します。

リターン値は*thisです。

 

streamsize istream::gcount() const

chcount(抽出文字数)を参照します。

リターン値はchcountです。

 

int_type istream::get()

文字を抽出します。

リターン値は次のとおりです。

抽出可能の場合 :抽出した文字

抽出不可の場合 :setstate(failbat)を呼び出して、streambuf::eof

 

istream& istream::get(char& c)

文字を抽出しcに格納します。抽出した文字がstreambuf::eof の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(signed char& c)

文字を抽出しcに格納します。抽出した文字がstreambuf::eof の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(unsigned char& c)

文字を抽出しcに格納します。抽出した文字がstreambuf::eof の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(signed char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(unsigned char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

文字列内に'delim'を検出したら、終了します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(signed char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

文字列内に'delim'を検出したら、終了します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(unsigned char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

文字列内に'delim'を検出したら、終了します。

ok_==falseまたは抽出した文

字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(streambuf& sb)

文字列を抽出し、sbの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::get(streambuf& sb, char delim)

文字列を抽出し、sbの指す記憶領域に格納します。

途中で文字'delim'を検出したら、終了します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::getline(char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::getline(signed char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::getline(unsigned char* s, streamsize n)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::getline(char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

途中で文字'delim'を検出したら、終了します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::getline(signed char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

途中で文字'delim'を検出したら、終了します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::getline(unsigned char* s, streamsize n, char delim)

サイズn-1の文字列を抽出し、sの指す記憶領域に格納します。

途中で文字'delim'を検出したら、終了します。

ok_==falseまたは抽出した文字数が0の場合は、failbitを設定します。

リターン値は*thisです。

 

istream& istream::ignore(streamsize n = 1, int_type delim = streambuf::eof)

n個の文字を読み飛ばします。

途中で文字'delim'を検出したら、読み飛ばし処理を中止します。

リターン値は*thisです。

 

int_type istream::peek()

次の入力可能な入力文字を求めます。

リターン値は次のとおりです。

ok_==falseの場合 :streambuf::eof

ok_!=falseの場合 :rdbuf()->sgetc()

 

istream& istream::read(char* s, streamsize n)

ok_!=falseの場合、サイズnの文字列を抽出し、sの指す記憶領域に格納します。

抽出した文字数がnと異なる場合、eofbitを設定します。

リターン値は*thisです。

 

istream& istream::read(signed char* s, streamsize n)

ok_!=falseの場合、サイズnの文字列を抽出し、sの指す記憶領域に格納します。

抽出した文字数がnと異なる場合、eofbitを設定します。

リターン値は*thisです。

 

istream& istream::read(unsigned char* s, streamsize n)

ok_!=falseの場合、サイズnの文字列を抽出し、sの指す記憶領域に格納します。

抽出した文字数がnと異なる場合、eofbitを設定します。

リターン値は*thisです。

 

streamsize istream::readsome(char* s, streamsize n)

サイズnの文字列を抽出し、sの指す記憶領域に格納します。

文字数がストリームサイズより大きければ、ストリームサイズ分格納します。

リターン値は、抽出した文字数です。

 

streamsize istream::readsome(signed char* s, streamsize n)

サイズnの文字列を抽出し、sの指す記憶領域に格納します。

文字数がストリームサイズより大きければ、ストリームサイズ分格納します。

リターン値は、抽出した文字数です。

 

streamsize istream::readsome(unsigned char* s, streamsize n)

サイズnの文字列を抽出し、sの指す記憶領域に格納します。

文字数がストリームサイズより大きければ、ストリームサイズ分格納します。

リターン値は、抽出した文字数です。

 

istream& istream::putback(char c)

文字cを入力ストリームに戻します。プットバックした文字がstreambuf::eofの場合は、badbitを設定します。

リターン値は*thisです。

 

istream& istream::unget()

入力ストリームのポインタをひとつ戻します。

抽出した文字がstreambuf::eofの場合、badbitを設定します。

リターン値は*thisです。

 

int istream::sync()

入力ストリームがあるかどうかを調べます。

この関数はstreambuf::pubsync()を呼び出します。

リターン値は次のとおりです。

入力ストリームがない場合 :streambuf::eof

入力ストリームがある場合 :0

 

pos_type istream::tellg()

入力ストリームの位置を調べます。

この関数はstreambuf::pubseekoff(0,cur,in)を呼び出します。

リターン値は次のとおりです。

ストリームの先頭からのオフセット

ただし、入力処理にエラーが発生した場合は-1

 

istream& istream::seekg(pos_type pos)

現在のストリームポインタからposだけ移動します。

この関数はstreambuf::pubseekpos(pos)を呼び出します。

リターン値は*thisです。

 

istream& istream::seekg(off_type off, ios_base::seekdir dir)

dirで指定された方法で入力ストリームの読み込み位置を移動します。

この関数はstreambuf::pubseekoff(off,dir)を呼び出します。

入力処理にエラーがある場合は処理は行いません。

リターン値は*thisです。

(h)

istreamクラスマニピュレータ

種別

定義名

説明

関数

istream& ws(istream& is)

空白類を読み飛ばします。

istream& ws(istream& is)

空白類を読み飛ばします。

リターン値はisです。

(i)

istreamメンバ外関数

種別

定義名

説明

関数

istream& operator>>(istream& in, char* s)

文字列を抽出し、sの指す記憶領域に格納します。

istream& operator>>(istream& in, signed char* s)

istream& operator>>(istream& in, unsigned char* s)

istream& operator>>(istream& in, char& c)

文字を抽出し、cに格納します。

istream& operator>>(istream& in, singed char& c)

istream& operator>>(istream& in, unsigned char& c)

istream& operator>>(istream& in, char* s)

文字列を抽出し、sの指す記憶領域に格納します。

(フィールド幅-1)個の文字を格納したか、または入力ストリームにstreambuf::eofが現れたか、または次の入力可能な文字cがisspace(c)==1の場合、処理は終了します。格納文字数が0の場合はfailbitを設定します。

リターン値はinです。

 

istream& operator>>(istream& in, signed char* s)

文字列を抽出し、sの指す記憶領域に格納します。

(フィールド幅-1)個の文字を格納したか、または入力ストリームにstreambuf::eofが現れたか、または次の入力可能な文字cがisspace(c)==1の場合、処理は終了します。格納文字数が0の場合はfailbitを設定します。

リターン値はinです。

 

istream& operator>>(istream& in, unsigned char* s)

文字列を抽出し、sの指す記憶領域に格納します。

(フィールド幅-1)個の文字を格納したか、または入力ストリームにstreambuf::eofが現れたか、または次の入力可能な文字cがisspace(c)==1の場合、処理は終了します。格納文字数が0の場合はfailbitを設定します。

リターン値はinです。

 

istream& operator>>(istream& in, char& c)

文字を抽出し、cに格納します。

抽出入力がない場合、failbitを設定します。

リターン値はinです。

 

istream& operator>>(istream& in, singed char& c)

文字を抽出し、cに格納します。

抽出入力がない場合、failbitを設定します。

リターン値はinです。

 

istream& operator>>(istream& in, unsigned char& c)

文字を抽出し、cに格納します。

抽出入力がない場合、failbitを設定します。

リターン値はinです。

(j)

ostream::sentryクラス

種別

定義名

説明

変数

ok_

出力可能状態か否かを意味します。

_ _ec2p_os

ostreamオブジェクトへのポインタです。

関数

sentry(ostream& os)

コンストラクタです。

~sentry()

デストラクタです。

operator bool()

ok_を参照します。

ostream::sentry::sentry(ostream& os)

内部クラスsentryのコンストラクタです。

good()が非0かつtie()が非0ならflush()を呼び出します。_ _ec2p_osにosを設定します。

 

ostream::sentry::~sentry()

内部クラスsentryのデストラクタです。

_ _ec2p_os->flags() & ios_base::unitbufが真なら、flush()を呼び出します。

 

ostream::sentry::operator bool()

ok_を参照します。

リターン値はok_です。

(k)

ostreamクラス

種別

定義名

説明

関数

ostream(streambuf* sbptr)

コンストラクタです。

virtual ~ostream()

デストラクタです。

ostream& operator<<(bool n)

nを出力ストリームに挿入します。

ostream& operator<<(short n)

ostream& operator<<(unsigned short n)

ostream& operator<<(int n)

ostream& operator<<(unsigned int n)

ostream& operator<<(long n)

ostream& operator<<(unsigned long n)

ostream& operator<<(long long n)

ostream& operator<<(unsigned long long n)

ostream& operator<<(float n)

ostream& operator<<(double n)

ostream& operator<<(long double n)

ostream& operator<<(void* n)

ostream& operator<<(streambuf* sbptr)

sbptrの出力列を出力ストリームに挿入します。

ostream& put(char c)

文字cを出力ストリームに挿入します。

ostream& write(
const char* s,
streamsize n)

sのn個の文字を出力ストリームに挿入します。

ostream& write(
const signed char* s,
streamsize n)

ostream& write(
const unsigned char* s,
streamsize n)

ostream& flush()

出力ストリームをフラッシュします。この関数はstreambuf::pubsync()を呼び出します。

pos_type tellp()

現在の書き込み位置を求めます。この関数はstreambuf::pubseekoff(0,cur,out)を呼び出します。

ostream& seekp(pos_type pos)

ストリームの先頭から現在の位置までのオフセットを求めます。現在のストリームポインタからposだけ移動します。この関数はstreambuf::pubseekpos(pos)を呼び出します。

ostream& seekp(off_type off, seekdir dir)

dirを基準として、ストリームの書き込み位置をoff分だけ移動します。この関数はstreambuf::pubseekoff(off,dir)を呼び出します。

ostream::ostream(streambuf* sbptr)

コンストラクタです。

ios(sbptr)を呼び出します。

 

virtual ostream::~ostream()

デストラクタです。

 

ostream& ostream::operator<<(bool n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(short n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(unsigned short n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(int n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(unsigned int n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(long n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(unsigned long n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(long long n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(unsigned long long n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(float n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(double n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(long double n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(void* n)

sentry::ok_==trueのとき、nを出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::operator<<(streambuf* sbptr)

sentry::ok_==trueのとき、sbptrの出力列を出力ストリームに挿入します。

sentry::ok_==falseのとき、failbitを設定します。

リターン値は*thisです。

 

ostream& ostream::put(char c)

sentry::ok_==trueかつrdbuf()->sputc(c)!=streambuf::eofのとき、cを出力ストリームに挿入します。

上記以外のとき、badbitを設定します。

リターン値は*thisです。

 

ostream& ostream::write(const char* s, streamsize n)

sentry::ok_==trueかつrdbuf()->sputn(s, n)==nのとき、sのn個の文字を出力ストリームに挿入します。

上記以外のとき、badbitを設定します。

リターン値は*thisです。

 

ostream& ostream::write(const signed char* s, streamsize n)

sentry::ok_==trueかつrdbuf()->sputn(s, n)==nのとき、sのn個の文字を出力ストリームに挿入します。

上記以外のとき、badbitを設定します。

リターン値は*thisです。

 

ostream& ostream::write(const unsigned char* s, streamsize n)

sentry::ok_==trueかつrdbuf()->sputn(s, n)==nのとき、sのn個の文字を出力ストリームに挿入します。

上記以外のとき、badbitを設定します。

リターン値は*thisです。

 

ostream& ostream::flush()

出力ストリームをフラッシュします。

この関数はstreambuf::pubsync()を呼び出します。

リターン値は*thisです。

 

pos_type ostream::tellp()

現在の書き込み位置を求めます。

この関数はstreambuf::pubseekoff(0,cur,out)を呼び出します。

リターン値は次のとおりです。

現在のストリームの位置

ただし、処理中にエラーが発生した場合は-1

 

ostream& ostream::seekp(pos_type pos)

エラーがないとき、ストリームの先頭から現在の位置までのオフセットを求めます。

また、現在のストリームポインタからposだけ移動します。

この関数はstreambuf::pubseekpos(pos)を呼び出します。

リターン値は*thisです。

 

ostream& ostream::seekp(off_type off, seekdir dir)

エラーがないとき、dirを基準としてoff分ストリームの位置を移動します。

この関数はstreambuf::pubseekoff(off,dir)を呼び出します。

リターン値は*thisです。

(l)

ostreamクラスマニピュレータ

種別

定義名

説明

関数

ostream& endl(ostream& os)

改行を挿入し、出力ストリームをフラッシュします。

ostream& ends(ostream& os)

ヌルコードを挿入します。

ostream& flush(ostream& os)

出力ストリームをフラッシュします。

ostream& endl(ostream& os)

ストリームに改行文字を挿入します。

出力ストリームをフラッシュします。この関数はflush()を呼び出します。

リターン値はosです。

 

ostream& ends(ostream& os)

出力ストリームにヌルコードを挿入します。

リターン値はosです。

 

ostream& flush(ostream& os)

出力ストリームをフラッシュします。この関数はstreambuf::sync()を呼び出します。

リターン値はosです。

(m)

ostreamメンバ外関数

種別

定義名

説明

関数

ostream& operator<<(ostream& os, char s)

sを出力ストリームに挿入します。

ostream& operator<<(ostream& os, signed char s)

ostream& operator<<(ostream& os, unsigned char s)

ostream& operator<<(ostream& os, const char* s)

ostream& operator<<(ostream& os, const singed char* s)

ostream& operator<<(ostream& os, const unsigned char* s)

ostream& operator<<(ostream& os, char s)

sentry::ok_==trueかつエラーがないとき、sを出力ストリームに挿入します。

上記以外のとき、failbitを設定します。

リターン値はosです。

 

ostream& operator<<(ostream& os, signed char s)

sentry::ok_==trueかつエラーがないとき、sを出力ストリームに挿入します。

上記以外のとき、failbitを設定します。

リターン値はosです。

 

ostream& operator<<(ostream& os, unsigned char s)

sentry::ok_==trueかつエラーがないとき、sを出力ストリームに挿入します。

上記以外のとき、failbitを設定します。

リターン値はosです。

 

ostream& operator<<(ostream& os, const char* s)

sentry::ok_==trueかつエラーがないとき、sを出力ストリームに挿入します。

上記以外のとき、failbitを設定します。

リターン値はosです。

 

ostream& operator<<(ostream& os, const singed char* s)

sentry::ok_==trueかつエラーがないとき、sを出力ストリームに挿入します。

上記以外のとき、failbitを設定します。

リターン値はosです。

 

ostream& operator<<(ostream& os, const unsigned char* s)

sentry::ok_==trueかつエラーがないとき、sを出力ストリームに挿入します。

上記以外のとき、failbitを設定します。

リターン値はosです。

 

(n)

smanipクラスマニピュレータ

種別

定義名

説明

関数

smanip resetiosflags(ios_base::fmtflags mask)

mask値で指定されたフラグをクリアします。

smanip setiosflags(ios_base::fmtflags mask)

書式フラグ(fmtfl)を設定します。

smanip setbase(int base)

出力時に用いる基数を設定します。

smanip setfill(char c)

詰め文字(fillch)を設定します。

smanip setprecision(int n)

精度(prec)を設定します。

smanip setw(int n)

フィールド幅(wide)を設定します。

smanip resetiosflags(ios_base::fmtflags mask)

mask値で指定されたフラグをクリアします。

リターン値は、入出力対象のオブジェクトです。

 

smanip setiosflags(ios_base::fmtflags mask)

書式フラグ(fmtfl)を設定します。

リターン値は、入出力対象のオブジェクトです。

 

smanip setbase(int base)

出力時に用いる基数を設定します。

リターン値は、入出力対象のオブジェクトです。

 

smanip setfill(char c)

詰め文字(fillch)を設定します。

リターン値は、入出力対象のオブジェクトです。

 

smanip setprecision(int n)

精度(prec)を設定します。

リターン値は、入出力対象のオブジェクトです。

 

smanip setw(int n)

フィールド幅(wide)を設定します。

リターン値は、入出力対象のオブジェクトです。

(o)

EC++入出力ライブラリの使用例

istream, ostreamのオブジェクトの初期化時にstreambufのかわりにmystrbufクラスのオブジェクトへのポインタを使うことにより入出力ストリームが使用可能になります。

 

クラスの派生関係は次のようになります。矢印は、派生クラスから基底クラスを参照していることを示します。

 

種別

定義名

説明

変数

_file_Ptr

ファイルポインタです。

関数

mystrbuf)

コンストラクタです。streambufバッファの初期化を行います。

mystrbuvoid* ptr)

virtual ~mystrbuf()

デストラクタです。

void* myfptr) const

FILE型構造体へのポインタを返します。

mystrbuf* openconst char* filename,
int mode)

ファイル名とモードを指定して、ファイルをオープンします。

mystrbuf* close()

ファイルのクローズを行います。

virtual streambuf* setbuf(char* s,
streamsize n)

ストリーム入出力用のバッファを確保します。

virtual pos_type seekoff(
off_type off,
ios_base::seekdir way,
ios_base::openmode =
(ios_base::openmode)
(ios_base::in | ios_base::out))




ストリームポインタの位置を変えます。

virtual pos_type seekpos(
pos_type sp,
ios_base::openmode =
(ios_base::openmode)
(ios_base::in | ios_base::out))



ストリームポインタの位置を変えます。

virtual int sync()

ストリームをフラッシュします。

virtual int showmanyc()

入力ストリームの有効な文字数を返します。

virtual int_type underflow()

ストリーム位置を動かさずに一文字読み込みます。

virtual int_type pbackfail(int_type c =
streambuf::eof)

cによって示される文字をプットバックします。

virtual int_type overflow(int_type c =
streambuf::eof)

cによって示される文字を挿入します。

void _Init(_f_type* fp)

初期処理です。

#include <istream>

#include <ostream>

#include <mystrbuf>

#include <string>

#include <new>

#include <stdio.h>

void main(void)

{

mystrbuf myfin(stdin);

mystrbuf myfout(stdout);

istream mycin(&myfin);

ostream mycout(&myfout);

 

int i;

short s;

long l;

char c;

string str;

 

mycin >> i >> s >> l >> c >> str;

mycout << "This is EC++ Library." << endl

<< i << s << l << c << str << endl;

return;

}