basic_ios Třída

Šablona třídy popisuje funkce úložiště a členů společné pro vstupní datové proudy (šablony basic_istreamtřídy) i výstupní datové proudy (šablony basic_ostreamtřídy), které závisí na parametrech šablony. (Třída ios_base popisuje, co je běžné a není závislé na parametrech šablony.) Objekt třídy basic_ios<class Elem, class Traits> pomáhá řídit datový proud s prvky typu Elem, jejichž znakové vlastnosti jsou určeny třídou Traits.

Syntaxe

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

Parametry

Elem
Typ znaku.

Traits
Typ poskytující informace o typu znaku, výchozí hodnota char_traits < Elem >je .

Poznámky

Objekt úložišť tříd basic_ios<class Elem, class Traits> :

  • Ukazatel vazby na objekt typu basic_istream<Elem, Traits>.

  • Ukazatel vyrovnávací paměti datového proudu na objekt typu basic_streambuf<Elem, Traits >.

  • Informace o formátování

  • Informace o stavu streamu v základním objektu typu ios_base.

  • Znak výplně v objektu typu char_type.

Další informace najdete v tématech basic_istream a basic_streambuf.

Konstruktory

Konstruktor Popis
basic_ios basic_ios Vytvoří třídu.

Typedefs

Název typu Popis
char_type Synonymum pro parametr Elemšablony .
int_type Synonymum pro Traits::int_type.
off_type Synonymum pro Traits::off_type.
pos_type Synonymum pro Traits::pos_type.
traits_type Synonymum pro parametr Traitsšablony .

Členské funkce

Členová funkce Popis
bad Označuje ztrátu integrity vyrovnávací paměti datového proudu.
clear Vymaže všechny příznaky chyb.
copyfmt Zkopíruje příznaky z jednoho datového proudu do druhého.
eof Označuje, jestli byl dosažen konec datového proudu.
exceptions Označuje, které výjimky bude datový proud vyvolán.
fail Označuje, že se nepodařilo extrahovat platné pole z datového proudu.
fill Určuje nebo vrátí znak, který se použije, když text není tak široký jako datový proud.
good Označuje, že stream je v dobrém stavu.
imbue Změní národní prostředí.
init Volá se basic_ios konstruktory.
move Přesune všechny hodnoty s výjimkou ukazatele na vyrovnávací paměť datového proudu z parametru na aktuální objekt.
narrow Najde ekvivalentní znak daného char_typeznaku .
rdbuf Směruje datový proud do zadané vyrovnávací paměti.
rdstate Přečte stav bitů pro příznaky.
set_rdbuf Přiřadí vyrovnávací paměť datového proudu jako vyrovnávací paměť pro čtení pro tento objekt datového proudu.
setstate Nastaví další příznaky.
swap Vymění hodnoty v tomto basic_ios objektu pro objekty jiného basic_ios objektu. Ukazatele na vyrovnávací paměti datového proudu se neprohodí.
tie Zajišťuje, že se jeden datový proud zpracuje před jiným datovým proudem.
widen Najde ekvivalent char_type daného znaku.

Operátory

Operátor Popis
explicit operator bool Umožňuje použití objektu basic_ios jako objektu bool. Automatický převod typů je zakázán, aby se zabránilo běžným nežádoucím vedlejším účinkům.
operator void * Označuje, jestli je stream stále dobrý.
operator! Označuje, jestli stream není špatný.

Požadavky

Záhlaví:<ios>

Obor názvů:std

basic_ios::bad

Označuje ztrátu integrity vyrovnávací paměti datového proudu.

bool bad() const;

Vrácená hodnota

true je-li rdstate & badbit nenulová; jinak false.

Další informace naleznete v badbittématu ios_base::iostate.

Příklad

// 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 Vytvoří třídu.

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

Parametry

sb
Standardní vyrovnávací paměť pro ukládání vstupních nebo výstupních prvků.

Poznámky

První konstruktor inicializuje své členské objekty voláním init(_ Sb). Druhý (chráněný) konstruktor ponechá své členské objekty neinicializované. Pozdější volání init musí inicializovat objekt dříve, než bude možné bezpečně zničit.

basic_ios::char_type

Synonymum pro parametr Elemšablony .

typedef Elem char_type;

basic_ios::clear

Vymaže všechny příznaky chyb.

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

Parametry

state
(Volitelné) Příznaky, které chcete nastavit po vymazání všech příznaků. Výchozí hodnota goodbitje .

reraise
(Volitelné) Určuje, zda má být výjimka znovu vyvolána. Výchozí hodnota je false (nevyvolá výjimku znovu).

Poznámky

Vlajky jsou goodbit, failbit, eofbita badbit. Otestujte tyto příznaky pomocí good, badeof, afail

Členová funkce nahradí informace o stavu uloženého datového proudu následujícími informacemi:

state | (rdbuf != 0 goodbit : badbit)

Pokud state&exceptions je nenulová, pak vyvolá objekt třídy failure.

Další informace najdete v tématech rdbuf a exceptions.

Příklad

Podívejte se rdstate na getline příklady použití clear.

basic_ios::copyfmt

Zkopíruje příznaky z jednoho datového proudu do druhého.

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

Parametry

right
Stream, jehož příznaky chcete zkopírovat.

Vrácená hodnota

Objekt this streamu, do kterého kopírujete příznaky.

Poznámky

Členová funkce hlásí událost erase_eventzpětného volání . Potom se zkopíruje do right*this znaku výplně, ukazatele vazby a informací o formátování. Před změnou masky výjimky hlásí událost copyfmt_eventzpětného volání . Pokud je kopie dokončena, state&exceptions je nenulová, funkce efektivně volá clear s argumentem rdstate. *thisVrátí .

Příklad

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

Označuje, jestli byl dosažen konec datového proudu.

bool eof() const;

Vrácená hodnota

true pokud byl dosažen konec datového proudu, false jinak.

Poznámky

Členová funkce vrátí true nenulové rdstate& eofbit hodnoty. Další informace naleznete v eofbittématu ios_base::iostate.

Příklad

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

Označuje, které výjimky bude datový proud vyvolán.

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

Parametry

Newexcept
Příznaky, které chcete vyvolat výjimku.

Vrácená hodnota

Příznaky, které jsou aktuálně zadány k vyvolání výjimky pro datový proud.

Poznámky

První členová funkce vrátí uloženou masku výjimky. Druhá členová funkce se uloží _Except do masky výjimky a vrátí předchozí uloženou hodnotu. Uložení nové masky výjimky může vyvolat výjimku stejně jako volání clear( rdstate ).

Příklad

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

Označuje, že se nepodařilo extrahovat platné pole z datového proudu.

bool fail() const;

Vrácená hodnota

true pokud rdstate & (badbit|failbit) je nenulová, jinak false.

Další informace naleznete v failbittématu ios_base::iostate.

Příklad

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

Určuje nebo vrátí znak, který se použije, když text není tak široký jako datový proud.

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

Parametry

Char
Požadovaný znak jako znak výplně.

Vrácená hodnota

Aktuální znak výplně.

Poznámky

První členová funkce vrátí uložený znak výplně. Druhá členová funkce uloží Char do znaku výplně a vrátí předchozí uloženou hodnotu.

Příklad

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

Označuje, že stream je v dobrém stavu.

bool good() const;

Vrácená hodnota

true pokud rdstate == goodbit (nejsou nastaveny žádné příznaky stavu), v opačném případě false.

Další informace naleznete v goodbittématu ios_base::iostate.

Příklad

Podívejte se basic_ios::bad na příklad použití good.

basic_ios::imbue

Změní národní prostředí.

locale imbue(const locale& Loc);

Parametry

Loc
Řetězec národního prostředí.

Vrácená hodnota

Předchozí národní prostředí.

Poznámky

Pokud rdbuf není NULL ukazatel, členské funkce volá

rdbuf-> pubimbue(_ Loc)

V každém případě vrátí ios_base::imbue(_ Loc).

Další informace najdete v tématech pubimbue a ios_base::imbue.

Příklad

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

Volá se basic_ios konstruktory.

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

Parametry

_Sb
Standardní vyrovnávací paměť pro ukládání vstupních nebo výstupních prvků.

_Isstd
Určuje, jestli se jedná o standardní datový proud.

Poznámky

Členová funkce ukládá hodnoty ve všech členských objektech, aby:

  • rdbuf vrátí _Sb.

  • tieNULL vrátí ukazatel.

  • rdstate vrátí goodbit , pokud _Sb je nenulový; v opačném případě vrátí badbithodnotu .

  • exceptions vrátí goodbit.

  • flags vrátí skipws | dec. Další informace najdete v tématech skipws a dec.

  • width vrátí hodnotu 0.

  • precision vrátí hodnotu 6.

  • fill vrátí znak mezery.

  • getloc vrátí locale::classic.

  • iwordvrátí nulu NULL a pword vrátí ukazatel pro všechny hodnoty argumentu.

basic_ios::int_type

Synonymum pro traits_type::int_type.

typedef typename traits_type::int_type int_type;

basic_ios::move

Přesune všechny hodnoty s výjimkou ukazatele na vyrovnávací paměť datového proudu z parametru na aktuální objekt.

void move(basic_ios&& right);

Parametry

right
Objekt ios_base , ze který chcete přesunout hodnoty.

Poznámky

Chráněná členová funkce přesune všechny hodnoty uložené right do *this s výjimkou uloženého stream buffer pointer, který se nezmění right a nastaví na NULL ukazatel v *this. Uložená tie pointer hodnota je nastavena NULL na ukazatel v right.

basic_ios::narrow

Najde ekvivalentní znak daného char_typeznaku .

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

Parametry

Char
Převod.char

Default
Požadovaný char vrácený, pokud se nenajde žádný ekvivalent.

Vrácená hodnota

Ekvivalent char daného char_type.

Poznámky

Členová funkce vrátí use_facet<ctype<E>>(getloc()).narrow(Char, Default).

Další informace najdete v tématech use_facet a getloc.

Příklad

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

Synonymum pro traits_type::off_type.

typedef typename traits_type::off_type off_type;

basic_ios::operator void *

Označuje, jestli je stream stále dobrý.

operator void *() const;

Vrácená hodnota

Operátor vrátí NULL ukazatel pouze v případě, že fail.

Příklad

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

Označuje, jestli stream není špatný.

bool operator!() const;

Vrácená hodnota

Vrátí stejnou hodnotu jako volání. basic_ios::fail

Příklad

// 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žňuje použití objektu basic_ios jako objektu bool. Automatický převod typů je zakázán, aby se zabránilo běžným nežádoucím vedlejším účinkům.

explicit operator bool() const;

Poznámky

Vrátí true , pokud datový proud neobsahuje žádné chyby; jinak false.

basic_ios::pos_type

Synonymum pro traits_type::pos_type.

typedef typename traits_type::pos_type pos_type;

basic_ios::rdbuf

Směruje datový proud do zadané vyrovnávací paměti.

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

Parametry

_Sb
Datový proud.

Poznámky

První členová funkce vrátí ukazatel vyrovnávací paměti uloženého datového proudu.

Druhá členová funkce se uloží _Sb do ukazatele vyrovnávací paměti uloženého datového proudu a vrátí dříve uloženou hodnotu.

Příklad

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

Přečte stav chyby datového proudu.

iostate rdstate() const;

Vrácená hodnota

Informace o stavu uloženého datového proudu.

Příklad

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

Nastaví zadané příznaky chyb datového proudu (aktuálně nastavené příznaky stavu chyb datového proudu zůstanou beze změny):

Vlajky Popis
goodbit Bez chyby
badbit Neopravitelná chyba
failbit Vstupně-výstupní operace selhala, například chyba formátování nebo extrakce
eofbit Stream dosáhl konce souboru.
void setstate(iostate _State);

Parametry

_State
Další příznaky, které chcete nastavit.

Poznámky

Člen funkce v podstatě volá clear(_ state | rdstate).

Další informace najdete v tématech clear a rdstate.

Příklad

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

Přiřadí vyrovnávací paměť datového proudu jako vyrovnávací paměť pro čtení pro tento objekt datového proudu.

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

Parametry

strbuf
Vyrovnávací paměť datového proudu, která se stane vyrovnávací pamětí pro čtení.

Poznámky

Chráněná členová funkce se ukládá strbuf v ukazateli vyrovnávací paměti datového proudu. Nevolá clearse.

basic_ios::tie

Zajišťuje, že se jeden datový proud zpracuje před jiným datovým proudem.

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

Parametry

str
Datový proud.

Vrácená hodnota

První členová funkce vrátí uložený ukazatel vazby. Druhá členová funkce se uloží str do ukazatele vazby a vrátí předchozí uloženou hodnotu.

Poznámky

tie způsobí synchronizaci dvou datových proudů, aby po dokončení operací na druhém datovém proudu došlo k operacím v jednom datovém proudu.

Příklad

V následujícím příkladu je cincoutzaručeno, že Enter a number: řetězec přejde do konzoly před samotným číslem se extrahuje z cin. Tím se eliminuje možnost, že řetězec "Zadat číslo:" stále sedí ve vyrovnávací paměti, když je číslo přečteno, takže jsme si jisti, že uživatel skutečně má výzvu k odpovědi. Ve výchozím nastavení cin jsou svázané cout .

#include <ios>
#include <iostream>

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

basic_ios::traits_type

Synonymum pro parametr Traitsšablony .

typedef Traits traits_type;

basic_ios::widen

Najde ekvivalent char_type daného char.

char_type widen(char Char) const;

Parametry

Char
Znak, který se má převést.

Vrácená hodnota

Najde ekvivalent char_type daného char.

Poznámky

Členová funkce vrátí use_facet<ctype<E>>(getloc).widen(Char).

Další informace najdete v tématech use_facet a getloc.

Příklad

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

Vymění hodnoty v tomto basic_ios objektu pro objekty jiného basic_ios objektu. Ukazatele na vyrovnávací paměti datového proudu se ale neprohodí.

void swap(basic_ios&& right);

Parametry

right
Objekt basic_ios , který se používá k výměně hodnot.

Poznámky

Chráněná členová funkce vyměňuje všechny hodnoty uložené right s *this výjimkou uloženého stream buffer pointer.

Viz také

Bezpečný přístup z více vláken ve standardní knihovně C++
iostream Programování
iostreams Úmluv