basic_ios
クラス
このクラス テンプレートは、テンプレート パラメーターに依存する、入力ストリーム (basic_istream
クラス テンプレート) と出力ストリーム (basic_ostream
クラス テンプレート) の両方に共通のストレージとメンバー関数を表します。 (クラス ios_base
では、テンプレート パラメーターに依存しない一般的な内容について説明します)。クラス basic_ios<class Elem, class Traits>
のオブジェクトは、 Elem
型の要素を持つストリームを制御するのに役立ちます。この要素の特性は、クラス Traits
によって決定されます。
template <class Elem, class Traits>
class basic_ios : public ios_base
Elem
文字型。
Traits
文字型に関する情報を提供する型。既定値は char_traits < Elem >
です。
クラス basic_ios<class Elem, class Traits>
ストアのオブジェクト:
basic_istream<Elem, Traits>
型のオブジェクトへのタイ ポインター。basic_streambuf<Elem, Traits >
型のオブジェクトへのストリーム バッファー ポインター。ios_base
型のベース オブジェクトのストリームの状態情報。char_type
型のオブジェクトの充てん文字。
詳細については、次のトピックを参照してください。 basic_istream
および basic_streambuf
コンストラクター | 説明 |
---|---|
basic_ios |
basic_ios クラスを構築します。 |
型名 | 説明 |
---|---|
char_type |
テンプレート パラメーター Elem のシノニム。 |
int_type |
Traits::int_type と同義。 |
off_type |
Traits::off_type と同義。 |
pos_type |
Traits::pos_type と同義。 |
traits_type |
テンプレート パラメーター Traits のシノニム。 |
メンバー関数 | 説明 |
---|---|
bad |
ストリーム バッファーの整合性の損失を示します。 |
clear |
すべてのエラー フラグをクリアします。 |
copyfmt |
1 つのストリームから別のストリームにフラグをコピーします。 |
eof |
ストリームの末尾に達しているかどうかを示します。 |
exceptions |
ストリームによってどの例外がスローされるかを示します。 |
fail |
ストリームからの有効フィールドの抽出エラーを示します。 |
fill |
テキストがストリームの幅に満たない場合に使用される文字を指定するか、返します。 |
good |
ストリームの状態が良好であることを示します。 |
imbue |
ロケールを変更します。 |
init |
basic_ios コンストラクターによって呼び出されます。 |
move |
ストリーム バッファーへのポインターを除くすべての値を、パラメーターから現在のオブジェクトに移動します。 |
narrow |
指定された char_type と同等の文字を検索します。 |
rdbuf |
指定したバッファーにストリームをルーティングします。 |
rdstate |
フラグのビットの状態を読み取ります。 |
set_rdbuf |
ストリーム バッファーを割り当てて、このストリーム オブジェクトの読み取りバッファーとして使用します。 |
setstate |
追加のフラグを設定します。 |
swap |
basic_ios オブジェクトの値を別の basic_ios オブジェクトの値と交換します。 ストリーム バッファーへのポインターは交換されません。 |
tie |
1 つのストリームが別のストリームの前に処理されるようにします。 |
widen |
指定された char と同等の char_type を検索します。 |
演算子 | 説明 |
---|---|
explicit operator bool |
basic_ios オブジェクトを bool として使用できるようにします。 しばしば発生する意図しない副作用を防ぐため、自動型変換は無効になっています。 |
operator void * |
ストリームが依然として良好かどうかを示します。 |
operator! |
ストリームが悪化していないかどうかを示します。 |
ヘッダー: <ios>
名前空間: std
ストリーム バッファーの整合性の損失を示します。
bool bad() const;
rdstate & badbit
が 0 以外の場合は true
、それ以外の場合は false
。
badbit
の詳細については、「ios_base::iostate
」を参照してください。
// basic_ios_bad.cpp
// compile with: /EHsc
#include <iostream>
int main( void )
{
using namespace std;
bool b = cout.bad( );
cout << boolalpha;
cout << b << endl;
b = cout.good( );
cout << b << endl;
}
basic_ios
クラスを構築します。
explicit basic_ios(basic_streambuf<Elem, Traits>* sb);
basic_ios();
sb
入力要素または出力要素を格納する標準のバッファー。
最初のコンストラクターは、init(_ Sb)
を呼び出すことによってそのメンバー オブジェクトを初期化します。 2 つ目の (保護された) コンストラクターは、そのメンバー オブジェクトを初期化前の状態のままにします。 以降の init
への呼び出しは、オブジェクトを安全に破棄する前に、初期化する必要があります。
テンプレート パラメーター Elem
のシノニム。
typedef Elem char_type;
すべてのエラー フラグをクリアします。
void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);
state
(省略可能) すべてのフラグをクリアした後に設定するフラグ。 既定値は goodbit
です。
reraise
(省略可能) 例外を再発生させるかどうかを指定します。 既定値は false
(例外を再発生させない) です。
フラグは goodbit
、failbit
、eofbit
、badbit
です。 good
、bad
、eof
、fail
を使用してこれらのフラグをテストします
このメンバー関数は、格納されているストリームの状態情報を次のものに置き換えます。
state | (rdbuf != 0 goodbit : badbit)
state&exceptions
が 0 以外の場合は、failure
クラスのオブジェクトをスローします。
詳細については、次のトピックを参照してください。 rdbuf
および exceptions
clear
の使用例については、rdstate
と getline
を参照してください。
1 つのストリームから別のストリームにフラグをコピーします。
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);
right
フラグをコピーするストリーム。
フラグのコピー先であるストリームの this
オブジェクト。
メンバー関数は、コールバック イベント erase_event
を報告します。 その後、right
から *this
に充填文字、リンク付けポインター、書式設定情報をコピーします。 例外マスクを変更する前に、コールバック イベント copyfmt_event
を報告します。 コピーが完了した後、state&exceptions
が 0 以外の場合、関数は実質的に引数 rdstate
を使用してclear
を呼び出します。 *this
を返します。
// basic_ios_copyfmt.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ofstream x( "test.txt" );
int i = 10;
x << showpos;
cout << i << endl;
cout.copyfmt( x );
cout << i << endl;
}
ストリームの末尾に達しているかどうかを示します。
bool eof() const;
ストリームの末尾に達している場合は true
、それ以外の場合は false
。
rdstate
& eofbit
が 0 以外の場合、メンバー関数はtrue
を返します。 eofbit
の詳細については、「ios_base::iostate
」を参照してください。
// basic_ios_eof.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
int main( int argc, char* argv[] )
{
fstream fs;
int n = 1;
fs.open( "basic_ios_eof.txt" ); // an empty file
cout << boolalpha
cout << fs.eof() << endl;
fs >> n; // Read the char in the file
cout << fs.eof() << endl;
}
ストリームによってどの例外がスローされるかを示します。
iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);
Newexcept
例外をスローするフラグ。
ストリームの例外をスローするために現在指定されているフラグ。
1 つ目のメンバー関数は、格納されている例外マスクを返します。 2 つ目のメンバー関数は、_Except
を例外マスクに格納し、その前に格納されていた値を返します。 新しい例外マスクを格納すると、呼び出し clear
( rdstate
) と同様に例外がスローされる可能性があります。
// basic_ios_exceptions.cpp
// compile with: /EHsc /GR
#include <iostream>
int main( )
{
using namespace std;
cout << cout.exceptions( ) << endl;
cout.exceptions( ios::eofbit );
cout << cout.exceptions( ) << endl;
try
{
cout.clear( ios::eofbit ); // Force eofbit on
}
catch ( exception &e )
{
cout.clear( );
cout << "Caught the exception." << endl;
cout << "Exception class: " << typeid(e).name() << endl;
cout << "Exception description: " << e.what() << endl;
}
}
0
1
Caught the exception.
Exception class: class std::ios_base::failure
Exception description: ios_base::eofbit set
ストリームからの有効フィールドの抽出エラーを示します。
bool fail() const;
rdstate & (badbit|failbit)
が 0 以外の場合は true
、それ以外の場合は false
。
failbit
の詳細については、「ios_base::iostate
」を参照してください。
// basic_ios_fail.cpp
// compile with: /EHsc
#include <iostream>
int main( void )
{
using namespace std;
bool b = cout.fail( );
cout << boolalpha;
cout << b << endl;
}
テキストがストリームの幅に満たない場合に使用される文字を指定するか、返します。
char_type fill() const;
char_type fill(char_type Char);
Char
充填文字として必要な文字。
現在の充填文字。
1 つ目のメンバー関数は、格納されている充填文字を返します。 2 つ目のメンバー関数は、Char
を充填文字に格納し、その前に格納されていた値を返します。
// basic_ios_fill.cpp
// compile with: /EHsc
#include <iostream>
#include <iomanip>
int main( )
{
using namespace std;
cout << setw( 5 ) << 'a' << endl;
cout.fill( 'x' );
cout << setw( 5 ) << 'a' << endl;
cout << cout.fill( ) << endl;
}
a
xxxxa
x
ストリームの状態が良好であることを示します。
bool good() const;
rdstate == goodbit
(設定されている状態フラグがない) の場合は true
、それ以外の場合は false
。
goodbit
の詳細については、「ios_base::iostate
」を参照してください。
good
の使用例については、basic_ios::bad
を参照してください。
ロケールを変更します。
locale imbue(const locale& Loc);
Loc
ロケールの文字列。
以前のロケール。
rdbuf
が NULL
ポインターでない場合、メンバー関数は以下を呼び出します
rdbuf-> pubimbue(_ Loc)
いずれの場合も、ios_base::imbue(_ Loc)
を返します。
詳細については、次のトピックを参照してください。 pubimbue
および ios_base::imbue
// basic_ios_imbue.cpp
// compile with: /EHsc
#include <iostream>
#include <locale>
int main( )
{
using namespace std;
cout.imbue( locale( "french_france" ) );
double x = 1234567.123456;
cout << x << endl;
}
basic_ios
コンストラクターによって呼び出されます。
void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);
_Sb
入力要素または出力要素を格納する標準のバッファー。
_Isstd
これが標準のストリームかどうかを指定します。
メンバー関数は、以下のようにするため、すべてのメンバー オブジェクトに値を格納します。
rdbuf
は、_Sb
を返します。tie
は、NULL
ポインターを返します。rdstate
は、_Sb
が 0 以外の場合はgoodbit
を返します。それ以外の場合は、badbit
を返します。exceptions
はgoodbit
を返します。flags
はskipws | dec
を返します。 詳細については、次のトピックを参照してください。skipws
およびdec
width
は 0 を返します。precision
は 6 を返します。fill
は空白文字を返します。getloc
は、locale::classic
を返します。
traits_type::int_type
と同義。
typedef typename traits_type::int_type int_type;
ストリーム バッファーへのポインターを除くすべての値を、パラメーターから現在のオブジェクトに移動します。
void move(basic_ios&& right);
right
値の移動元となる ios_base
オブジェクト。
プロテクト メンバー関数は、right
に格納されているすべての値を *this
に移動します。ただし、格納されている stream buffer pointer
は除きます。これは、right
で変更されず、*this
で NULL
ポインターに設定されます。 格納されている tie pointer
は、right
で NULL
ポインターに設定されます。
指定された char_type
と同等の文字を検索します。
char narrow(char_type Char, char Default = '\0') const;
Char
変換する char
。
Default
同等のものが見つからない場合に返す char
。
指定された char_type
と同等の char
。
このメンバー関数は、use_facet<ctype<E>>(getloc()).narrow(Char, Default)
を返します。
詳細については、次のトピックを参照してください。 use_facet
および getloc
// basic_ios_narrow.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>
int main( )
{
using namespace std;
wchar_t *x = L"test";
char y[10];
cout << x[0] << endl;
wcout << x << endl;
y[0] = wcout.narrow( x[0] );
cout << y[0] << endl;
}
traits_type::off_type
と同義。
typedef typename traits_type::off_type off_type;
ストリームが依然として良好かどうかを示します。
operator void *() const;
演算子は fail
の場合にのみ NULL
ポインターを返します。
// basic_ios_opgood.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << (bool)(&cout != 0) << endl; // Stream is still good
}
1
ストリームが悪化していないかどうかを示します。
bool operator!() const;
basic_ios::fail
の呼び出しと同じものを返します。
// basic_ios_opbad.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << !cout << endl; // Stream is not bad
}
0
basic_ios
オブジェクトを bool
として使用できるようにします。 しばしば発生する意図しない副作用を防ぐため、自動型変換は無効になっています。
explicit operator bool() const;
ストリームにエラーがない場合は true
を返します。それ以外の場合は false
を返します。
traits_type::pos_type
と同義。
typedef typename traits_type::pos_type pos_type;
指定したバッファーにストリームをルーティングします。
basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);
_Sb
ストリーム。
1 つ目のメンバー関数は、格納されているストリーム バッファー ポインターを返します。
2 つ目のメンバー関数は、_Sb
を格納されているストリーム バッファー ポインターに格納し、その前に格納されていた値を返します。
// basic_ios_rdbuf.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ofstream file( "rdbuf.txt" );
streambuf *x = cout.rdbuf( file.rdbuf( ) );
cout << "test" << endl; // Goes to file
cout.rdbuf(x);
cout << "test2" << endl;
}
test2
ストリーム エラー状態を読み取ります。
iostate rdstate() const;
格納されているストリームの状態情報。
// basic_ios_rdstate.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
void TestFlags( ios& x )
{
cout << ( x.rdstate( ) & ios::badbit ) << endl;
cout << ( x.rdstate( ) & ios::failbit ) << endl;
cout << ( x.rdstate( ) & ios::eofbit ) << endl;
cout << endl;
}
int main( )
{
fstream x( "c:\test.txt", ios::out );
x.clear( );
TestFlags( x );
x.clear( ios::badbit | ios::failbit | ios::eofbit );
TestFlags( x );
}
0
0
0
4
2
1
指定したストリーム エラー フラグを設定します (現在設定されているストリーム エラー状態フラグは変更されません)。
フラグ | 説明 |
---|---|
goodbit |
エラーなし |
badbit |
回復不能なエラー |
failbit |
書式設定エラーや抽出エラーなど、I/O 操作に失敗しました |
eofbit |
ストリームがファイルの末尾に到達しました |
void setstate(iostate _State);
_State
設定する追加のフラグ。
メンバー関数は、実質的に clear(_ state | rdstate)
を呼び出します。
詳細については、次のトピックを参照してください。 clear
および rdstate
// basic_ios_setstate.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
using namespace std;
int main( )
{
bool b = cout.bad( );
cout << b << endl; // Good
cout.clear( ios::badbit );
b = cout.bad( );
// cout.clear( );
cout << b << endl; // Is bad, good
b = cout.fail( );
cout << b << endl; // Not failed
cout.setstate( ios::failbit );
b = cout.fail( );
cout.clear( );
cout << b << endl; // Is failed, good
return 0;
}
0
1
ストリーム バッファーを割り当てて、このストリーム オブジェクトの読み取りバッファーとして使用します。
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)
strbuf
読み取りバッファーになるストリーム バッファー。
保護されたメンバー関数は、ストリーム バッファー ポインターに strbuf
を格納します。 clear
を呼び出すことはしません。
1 つのストリームが別のストリームの前に処理されるようにします。
basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);
str
ストリーム。
1 つ目のメンバー関数は、格納されているリンク付けポインターを返します。 2 つ目のメンバー関数は、str
をリンク付けポインターに格納し、その前に格納されていた値を返します。
tie
は 2 つのストリームを同期させて、一方のストリームでの操作が完了すると、もう一方のストリームで操作が行われるようにします。
次の例では、cin
をcout
に結び付けることで、cin
から数値自体が抽出される前に、Enter a number:
文字列がコンソールに移動することが保証されます。 これにより、数値の読み取り時に "Enter a number:" 文字列がバッファーにまだ残っている可能性を排除して、ユーザーが応答するプロンプトが必ず実際にあるようにします。 既定では、cin
と cout
がリンクされます。
#include <ios>
#include <iostream>
int main( )
{
using namespace std;
int i;
cin.tie( &cout );
cout << "Enter a number:";
cin >> i;
}
テンプレート パラメーター Traits
のシノニム。
typedef Traits traits_type;
指定された char
と同等の char_type
を検索します。
char_type widen(char Char) const;
Char
変換する文字。
指定された char
と同等の char_type
を検索します。
このメンバー関数は、use_facet<ctype<E>>(getloc).widen(Char)
を返します。
詳細については、次のトピックを参照してください。 use_facet
および getloc
// basic_ios_widen.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>
int main( )
{
using namespace std;
char *z = "Hello";
wchar_t y[2] = {0,0};
cout << z[0] << endl;
y[0] = wcout.widen( z[0] );
wcout << &y[0] << endl;
}
basic_ios
オブジェクトの値を別の basic_ios
オブジェクトの値と交換します。 ただし、ストリーム バッファーへのポインターは交換されません。
void swap(basic_ios&& right);
right
値を交換するために使用される basic_ios
オブジェクト。
プロテクト メンバー関数は、格納されている stream buffer pointer
を除き、right
に格納されているすべての値を *this
と交換します。