Udostępnij za pośrednictwem


basic_ios Klasa

Szablon klasy opisuje funkcje magazynu i składowych wspólne dla strumieni wejściowych (szablonu basic_istreamklasy ) i strumieni wyjściowych (szablonu basic_ostreamklasy ), które zależą od parametrów szablonu szablonu. (Klasa ios_base opisuje, co jest wspólne i nie zależy od parametrów szablonu). Obiekt klasy basic_ios<class Elem, class Traits> pomaga kontrolować strumień za pomocą elementów typu Elem, których cechy znaków są określane przez klasę Traits.

Składnia

template <class Elem, class Traits>
class basic_ios : public ios_base

Parametry

Elem
Typ znaku.

Traits
Typ dostarczający informacje o typie znaku, domyślnie ma wartość char_traits < Elem >.

Uwagi

Obiekt magazynów klas basic_ios<class Elem, class Traits> :

  • Wskaźnik tie do obiektu typu basic_istream<Elem, Traits>.

  • Wskaźnik buforu strumienia do obiektu typu basic_streambuf<Elem, Traits >.

  • Formatowanie informacji.

  • Informacje o stanie strumienia w obiekcie podstawowym typu ios_base.

  • Znak wypełnienia w obiekcie typu char_type.

Aby uzyskać więcej informacji, zobacz tematy basic_istream oraz basic_streambuf.

Konstruktory

Konstruktor opis
basic_ios Tworzy klasę basic_ios .

Typedefs

Nazwa typu opis
char_type Synonim parametru Elemszablonu .
int_type Synonim dla elementu Traits::int_type.
off_type Synonim dla elementu Traits::off_type.
pos_type Synonim dla elementu Traits::pos_type.
traits_type Synonim parametru Traitsszablonu .

Funkcje składowe

Funkcja składowa opis
bad Wskazuje utratę integralności buforu strumienia.
clear Czyści wszystkie flagi błędów.
copyfmt Kopiuje flagi z jednego strumienia do innego.
eof Wskazuje, czy osiągnięto koniec strumienia.
exceptions Wskazuje, które wyjątki zostaną zgłoszone przez strumień.
fail Wskazuje, że nie można wyodrębnić prawidłowego pola ze strumienia.
fill Określa lub zwraca znak, który będzie używany, gdy tekst nie jest tak szeroki, jak strumień.
good Wskazuje, że strumień jest w dobrym stanie.
imbue Zmienia ustawienia regionalne.
init Wywoływane przez basic_ios konstruktory.
move Przenosi wszystkie wartości, z wyjątkiem wskaźnika do buforu strumienia, z parametru do bieżącego obiektu.
narrow Znajduje odpowiedni znak dla danego char_typeelementu .
rdbuf Kieruje strumieniem do określonego buforu.
rdstate Odczytuje stan bitów flag.
set_rdbuf Przypisuje bufor strumienia jako bufor odczytu dla tego obiektu strumienia.
setstate Ustawia dodatkowe flagi.
swap Wymienia wartości w tym basic_ios obiekcie dla tych z innego basic_ios obiektu. Wskaźniki do buforów strumienia nie są zamieniane.
tie Gwarantuje, że jeden strumień jest przetwarzany przed innym strumieniem.
widen Znajduje odpowiednik char_type danego znaku.

Operatory

Operator opis
explicit operator bool Umożliwia użycie basic_ios obiektu jako boolobiektu . Automatyczna konwersja typu jest wyłączona, aby zapobiec typowym, niezamierzonym skutkom ubocznym.
operator void * Wskazuje, czy strumień jest nadal dobry.
operator! Wskazuje, czy strumień nie jest zły.

Wymagania

Nagłówka:<ios>

Obszaru nazw:std

basic_ios::bad

Wskazuje utratę integralności buforu strumienia

bool bad() const;

Wartość zwracana

true if rdstate & badbit is nonzero; w przeciwnym razie false.

Aby uzyskać więcej informacji na temat badbitprogramu , zobacz ios_base::iostate.

Przykład

// 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

Tworzy klasę basic_ios .

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

Parametry

sb
Bufor standardowy do przechowywania elementów wejściowych lub wyjściowych.

Uwagi

Pierwszy konstruktor inicjuje jego obiekty członkowskie, wywołując metodę init(_ Sb). Drugi (chroniony) konstruktor pozostawia niezainicjowane obiekty członkowskie. Późniejsze wywołanie metody musi zainicjować init obiekt, zanim będzie można go bezpiecznie zniszczyć.

basic_ios::char_type

Synonim parametru Elemszablonu .

typedef Elem char_type;

basic_ios::clear

Czyści wszystkie flagi błędów.

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

Parametry

state
(Opcjonalnie) Flagi, które chcesz ustawić po wyczyszczeniu wszystkich flag. Wartość domyślna to goodbit.

reraise
(Opcjonalnie) Określa, czy wyjątek powinien zostać ponownie zgłoszony. Wartość domyślna to false (nie spowoduje ponownego wywołania wyjątku).

Uwagi

Flagi to goodbit, failbit, eofbiti badbit. Testowanie tych flag za pomocą goodpoleceń , bad, eofi fail

Funkcja składowa zastępuje przechowywane informacje o stanie strumienia:

state | (rdbuf != 0 goodbit : badbit)

Jeśli state&exceptions element jest niezerowy, zgłasza obiekt klasy failure.

Aby uzyskać więcej informacji, zobacz tematy rdbuf oraz exceptions.

Przykład

Zobacz rdstate i getline , aby zapoznać się z przykładami przy użyciu polecenia clear.

basic_ios::copyfmt

Kopiuje flagi z jednego strumienia do innego.

basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);

Parametry

right
Strumień, którego flagi chcesz skopiować.

Wartość zwracana

this Obiekt strumienia, do którego kopiujesz flagi.

Uwagi

Funkcja składowa zgłasza zdarzenie erase_eventwywołania zwrotnego . Następnie kopiuje z right do *this znaku wypełnienia, wskaźnika krawata i informacji o formatowaniu. Przed zmianą maski wyjątku zgłasza zdarzenie copyfmt_eventwywołania zwrotnego . Jeśli po zakończeniu kopiowania funkcja jest niezerowa, state&exceptions funkcja skutecznie wywołuje clear argument .rdstate Zwraca wartość *this.

Przykład

// 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

Wskazuje, czy osiągnięto koniec strumienia.

bool eof() const;

Wartość zwracana

true jeśli osiągnięto koniec strumienia, false w przeciwnym razie.

Uwagi

Funkcja składowa zwraca true wartość , jeśli rdstate& eofbit jest niezerowa. Aby uzyskać więcej informacji na temat eofbitprogramu , zobacz ios_base::iostate.

Przykład

// 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

Wskazuje, które wyjątki zostaną zgłoszone przez strumień.

iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);

Parametry

Newexcept
Flagi, które chcesz zgłosić wyjątek.

Wartość zwracana

Flagi, które są obecnie określone, aby zgłosić wyjątek dla strumienia.

Uwagi

Pierwsza funkcja składowa zwraca przechowywaną maskę wyjątków. Druga funkcja składowa przechowuje _Except w masce wyjątków i zwraca poprzednią przechowywaną wartość. Zapisanie nowej maski wyjątku może zgłosić wyjątek, podobnie jak wywołanie clear( rdstate ).

Przykład

// 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

Wskazuje, że nie można wyodrębnić prawidłowego pola ze strumienia.

bool fail() const;

Wartość zwracana

true jeśli rdstate & (badbit|failbit) jest nonzero, w przeciwnym razie false.

Aby uzyskać więcej informacji na temat failbitprogramu , zobacz ios_base::iostate.

Przykład

// 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

Określa lub zwraca znak, który będzie używany, gdy tekst nie jest tak szeroki, jak strumień.

char_type fill() const;
char_type fill(char_type Char);

Parametry

Char
Znak, który ma być znakiem wypełnienia.

Wartość zwracana

Bieżący znak wypełnienia.

Uwagi

Pierwsza funkcja składowa zwraca przechowywany znak wypełnienia. Druga funkcja składowa przechowuje Char znak wypełnienia i zwraca poprzednią przechowywaną wartość.

Przykład

// 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

Wskazuje, że strumień jest w dobrym stanie.

bool good() const;

Wartość zwracana

true jeśli rdstate == goodbit (nie ustawiono flag stanu), w przeciwnym razie false.

Aby uzyskać więcej informacji na temat goodbitprogramu , zobacz ios_base::iostate.

Przykład

Zobacz basic_ios::bad przykład użycia elementu good.

basic_ios::imbue

Zmienia ustawienia regionalne.

locale imbue(const locale& Loc);

Parametry

Loc
Ciąg ustawień regionalnych.

Wartość zwracana

Poprzednie ustawienia regionalne.

Uwagi

Jeśli rdbuf nie jest wskaźnikiem NULL , funkcja składowa wywołuje funkcję

rdbuf-> pubimbue(_ Loc)

W każdym razie zwraca wartość ios_base::imbue(_ Loc).

Aby uzyskać więcej informacji, zobacz tematy pubimbue oraz ios_base::imbue.

Przykład

// 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

Wywoływane przez basic_ios konstruktory.

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

Parametry

_Sb
Bufor standardowy do przechowywania elementów wejściowych lub wyjściowych.

_Isstd
Określa, czy jest to standardowy strumień.

Uwagi

Funkcja składowa przechowuje wartości we wszystkich obiektach członkowskich, tak aby:

  • rdbuf zwraca wartość _Sb.

  • tieNULL zwraca wskaźnik.

  • rdstate metoda zwraca goodbit wartość , jeśli _Sb jest niezerowa; w przeciwnym razie zwraca wartość badbit.

  • exceptions zwraca wartość goodbit.

  • flags zwraca wartość skipws | dec. Aby uzyskać więcej informacji, zobacz tematy skipws oraz dec.

  • width zwraca wartość 0.

  • precision zwraca wartość 6.

  • fill zwraca znak spacji.

  • getloc zwraca wartość locale::classic.

  • iword zwraca zero i pword zwraca NULL wskaźnik dla wszystkich wartości argumentów.

basic_ios::int_type

Synonim dla elementu traits_type::int_type.

typedef typename traits_type::int_type int_type;

basic_ios::move

Przenosi wszystkie wartości, z wyjątkiem wskaźnika do buforu strumienia, z parametru do bieżącego obiektu.

void move(basic_ios&& right);

Parametry

right
ios_base Obiekt, z który ma przenosić wartości.

Uwagi

Chroniona funkcja składowa przenosi wszystkie wartości przechowywane w right obiekcie z *this wyjątkiem przechowywanego stream buffer pointerelementu , który jest niezmieniony w right elemencie i ustawiony na wskaźnik w elemencie NULL*this. tie pointer Przechowywany element jest ustawiony na wskaźnik w elemrightNULL.

basic_ios::narrow

Znajduje odpowiedni znak dla danego char_typeelementu .

char narrow(char_type Char, char Default = '\0') const;

Parametry

Char
Element char do konwersji.

Default
Element char , który ma zostać zwrócony, jeśli nie znaleziono odpowiednika.

Wartość zwracana

Odpowiednik char danego char_typeelementu .

Uwagi

Funkcja składowa zwraca wartość use_facet<ctype<E>>(getloc()).narrow(Char, Default).

Aby uzyskać więcej informacji, zobacz tematy use_facet oraz getloc.

Przykład

// 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

Synonim dla elementu traits_type::off_type.

typedef typename traits_type::off_type off_type;

basic_ios::operator void *

Wskazuje, czy strumień jest nadal dobry.

operator void *() const;

Wartość zwracana

Operator zwraca NULL wskaźnik tylko wtedy, gdy fail.

Przykład

// 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!

Wskazuje, czy strumień nie jest zły.

bool operator!() const;

Wartość zwracana

Zwraca to samo, co wywołanie basic_ios::fail

Przykład

// 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

Umożliwia użycie basic_ios obiektu jako boolobiektu . Automatyczna konwersja typu jest wyłączona, aby zapobiec typowym, niezamierzonym skutkom ubocznym.

explicit operator bool() const;

Uwagi

Zwraca true wartość , jeśli strumień nie zawiera błędów; w przeciwnym razie false.

basic_ios::pos_type

Synonim dla elementu traits_type::pos_type.

typedef typename traits_type::pos_type pos_type;

basic_ios::rdbuf

Kieruje strumieniem do określonego buforu.

basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);

Parametry

_Sb
Strumień.

Uwagi

Pierwsza funkcja składowa zwraca wskaźnik buforu przechowywanego strumienia.

Druga funkcja składowa przechowuje _Sb w wskaźniku buforu przechowywanego strumienia i zwraca wcześniej przechowywaną wartość.

Przykład

// 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

Odczytuje stan błędu strumienia.

iostate rdstate() const;

Wartość zwracana

Przechowywane informacje o stanie strumienia.

Przykład

// 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

Ustawia flagi błędów określonego strumienia (obecnie ustaw flagi stanu błędu strumienia pozostają niezmienione):

Flaga opis
goodbit Brak błędów
badbit Błąd nieodwracalny
failbit Operacja we/wy nie powiodła się, na przykład błąd formatowania lub wyodrębniania
eofbit Strumień osiągnął koniec pliku
void setstate(iostate _State);

Parametry

_State
Dodatkowe flagi do ustawienia.

Uwagi

Funkcja składowa zasadniczo wywołuje funkcję clear(_ state | rdstate).

Aby uzyskać więcej informacji, zobacz tematy clear oraz rdstate.

Przykład

// 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

Przypisuje bufor strumienia jako bufor odczytu dla tego obiektu strumienia.

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

Parametry

strbuf
Bufor strumienia, który stanie się buforem odczytu.

Uwagi

Chroniona funkcja składowa przechowuje strbuf w wskaźniku buforu strumienia. Nie wywołuje metody clear.

basic_ios::tie

Gwarantuje, że jeden strumień jest przetwarzany przed innym strumieniem.

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

Parametry

str
Strumień.

Wartość zwracana

Pierwsza funkcja składowa zwraca przechowywany wskaźnik krawata. Druga funkcja składowa przechowuje str wskaźnik krawata i zwraca poprzednią przechowywaną wartość.

Uwagi

tie powoduje synchronizację dwóch strumieni, takich jak wykonywanie operacji na jednym strumieniu po zakończeniu operacji na drugim strumieniu.

Przykład

W poniższym przykładzie przez powiązanie cincoutz elementem gwarantuje, że Enter a number: ciąg przejdzie do konsoli, zanim sam numer zostanie wyodrębniony z cinelementu . Eliminuje to możliwość, że ciąg "Wprowadź liczbę:" nadal znajduje się w buforze, gdy liczba jest odczytywana, dzięki czemu mamy pewność, że użytkownik rzeczywiście ma jakiś monit o udzielenie odpowiedzi. Domyślnie cin i cout są powiązane.

#include <ios>
#include <iostream>

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

basic_ios::traits_type

Synonim parametru Traitsszablonu .

typedef Traits traits_type;

basic_ios::widen

Znajduje odpowiednik char_type danego charelementu .

char_type widen(char Char) const;

Parametry

Char
Znak do konwersji.

Wartość zwracana

Znajduje odpowiednik char_type danego charelementu .

Uwagi

Funkcja składowa zwraca wartość use_facet<ctype<E>>(getloc).widen(Char).

Aby uzyskać więcej informacji, zobacz tematy use_facet oraz getloc.

Przykład

// 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

Wymienia wartości w tym basic_ios obiekcie dla tych z innego basic_ios obiektu. Wskaźniki do buforów strumienia nie są jednak zamieniane.

void swap(basic_ios&& right);

Parametry

right
basic_ios Obiekt używany do wymiany wartości.

Uwagi

Chroniona funkcja składowa wymienia wszystkie wartości przechowywane w right obiekcie z *this wyjątkiem przechowywanego stream buffer pointerelementu .

Zobacz też

Bezpieczeństwo wątku w standardowej bibliotece C++
iostream Programowania
iostreams Konwencje