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 クラスを構築します。

Typedefs

型名 説明
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

basic_ios::bad

ストリーム バッファーの整合性の損失を示します。

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::basic_ios

basic_ios クラスを構築します。

explicit basic_ios(basic_streambuf<Elem,  Traits>* sb);
basic_ios();

パラメーター

sb
入力要素または出力要素を格納する標準のバッファー。

解説

最初のコンストラクターは、init(_ Sb) を呼び出すことによってそのメンバー オブジェクトを初期化します。 2 つ目の (保護された) コンストラクターは、そのメンバー オブジェクトを初期化前の状態のままにします。 以降の init への呼び出しは、オブジェクトを安全に破棄する前に、初期化する必要があります。

basic_ios::char_type

テンプレート パラメーター Elem のシノニム。

typedef Elem char_type;

basic_ios::clear

すべてのエラー フラグをクリアします。

void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);

パラメーター

state
(省略可能) すべてのフラグをクリアした後に設定するフラグ。 既定値は goodbit です。

reraise
(省略可能) 例外を再発生させるかどうかを指定します。 既定値は false (例外を再発生させない) です。

解説

フラグは goodbitfailbiteofbitbadbit です。 goodbadeoffail を使用してこれらのフラグをテストします

このメンバー関数は、格納されているストリームの状態情報を次のものに置き換えます。

state | (rdbuf != 0 goodbit : badbit)

state&exceptions が 0 以外の場合は、failure クラスのオブジェクトをスローします。

詳細については、次のトピックを参照してください。 rdbuf および exceptions

clear の使用例については、rdstategetline を参照してください。

basic_ios::copyfmt

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;
}

basic_ios::eof

ストリームの末尾に達しているかどうかを示します。

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;
}

basic_ios::exceptions

ストリームによってどの例外がスローされるかを示します。

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

basic_ios::fail

ストリームからの有効フィールドの抽出エラーを示します。

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;
}

basic_ios::fill

テキストがストリームの幅に満たない場合に使用される文字を指定するか、返します。

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

basic_ios::good

ストリームの状態が良好であることを示します。

bool good() const;

戻り値

rdstate == goodbit (設定されている状態フラグがない) の場合は true、それ以外の場合は false

goodbit の詳細については、「ios_base::iostate」を参照してください。

good の使用例については、basic_ios::bad を参照してください。

basic_ios::imbue

ロケールを変更します。

locale imbue(const locale& Loc);

パラメーター

Loc
ロケールの文字列。

戻り値

以前のロケール。

解説

rdbufNULL ポインターでない場合、メンバー関数は以下を呼び出します

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::init

basic_ios コンストラクターによって呼び出されます。

void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);

パラメーター

_Sb
入力要素または出力要素を格納する標準のバッファー。

_Isstd
これが標準のストリームかどうかを指定します。

解説

メンバー関数は、以下のようにするため、すべてのメンバー オブジェクトに値を格納します。

  • rdbuf は、_Sb を返します。

  • tie は、NULL ポインターを返します。

  • rdstate は、_Sb が 0 以外の場合は goodbit を返します。それ以外の場合は、badbit を返します。

  • exceptionsgoodbit を返します。

  • flagsskipws | dec を返します。 詳細については、次のトピックを参照してください。 skipws および dec

  • width は 0 を返します。

  • precision は 6 を返します。

  • fill は空白文字を返します。

  • getloc は、locale::classic を返します。

  • iword は 0 を返し、pword は、すべての引数値の NULL ポインターを返します。

basic_ios::int_type

traits_type::int_type と同義。

typedef typename traits_type::int_type int_type;

basic_ios::move

ストリーム バッファーへのポインターを除くすべての値を、パラメーターから現在のオブジェクトに移動します。

void move(basic_ios&& right);

パラメーター

right
値の移動元となる ios_base オブジェクト。

解説

プロテクト メンバー関数は、right に格納されているすべての値を *this に移動します。ただし、格納されている stream buffer pointer は除きます。これは、right で変更されず、*thisNULL ポインターに設定されます。 格納されている tie pointer は、rightNULL ポインターに設定されます。

basic_ios::narrow

指定された 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;
}

basic_ios::off_type

traits_type::off_type と同義。

typedef typename traits_type::off_type off_type;

basic_ios::operator void *

ストリームが依然として良好かどうかを示します。

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

basic_ios::operator!

ストリームが悪化していないかどうかを示します。

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::operator bool

basic_ios オブジェクトを bool として使用できるようにします。 しばしば発生する意図しない副作用を防ぐため、自動型変換は無効になっています。

explicit operator bool() const;

解説

ストリームにエラーがない場合は true を返します。それ以外の場合は false を返します。

basic_ios::pos_type

traits_type::pos_type と同義。

typedef typename traits_type::pos_type pos_type;

basic_ios::rdbuf

指定したバッファーにストリームをルーティングします。

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

basic_ios::rdstate

ストリーム エラー状態を読み取ります。

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

basic_ios::setstate

指定したストリーム エラー フラグを設定します (現在設定されているストリーム エラー状態フラグは変更されません)。

flag 説明
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

basic_ios::set_rdbuf

ストリーム バッファーを割り当てて、このストリーム オブジェクトの読み取りバッファーとして使用します。

void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)

パラメーター

strbuf
読み取りバッファーになるストリーム バッファー。

解説

保護されたメンバー関数は、ストリーム バッファー ポインターに strbuf を格納します。 clear を呼び出すことはしません。

basic_ios::tie

1 つのストリームが別のストリームの前に処理されるようにします。

basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);

パラメーター

str
ストリーム。

戻り値

1 つ目のメンバー関数は、格納されているリンク付けポインターを返します。 2 つ目のメンバー関数は、str をリンク付けポインターに格納し、その前に格納されていた値を返します。

解説

tie は 2 つのストリームを同期させて、一方のストリームでの操作が完了すると、もう一方のストリームで操作が行われるようにします。

次の例では、cincoutに結び付けることで、cinから数値自体が抽出される前に、Enter a number:文字列がコンソールに移動することが保証されます。 これにより、数値の読み取り時に "Enter a number:" 文字列がバッファーにまだ残っている可能性を排除して、ユーザーが応答するプロンプトが必ず実際にあるようにします。 既定では、cincout がリンクされます。

#include <ios>
#include <iostream>

int main( )
{
    using namespace std;
    int i;
    cin.tie( &cout );
    cout << "Enter a number:";
    cin >> i;
}

basic_ios::traits_type

テンプレート パラメーター Traits のシノニム。

typedef Traits traits_type;

basic_ios::widen

指定された 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::swap

basic_ios オブジェクトの値を別の basic_ios オブジェクトの値と交換します。 ただし、ストリーム バッファーへのポインターは交換されません。

void swap(basic_ios&& right);

パラメーター

right
値を交換するために使用される basic_ios オブジェクト。

解説

プロテクト メンバー関数は、格納されている stream buffer pointer を除き、right に格納されているすべての値を *this と交換します。

関連項目

C++ 標準ライブラリ内のスレッド セーフ
iostream プログラミング
iostreams の規則