basic_ios
Třída
Šablona třídy popisuje funkce úložiště a členů společné pro vstupní datové proudy (šablony basic_istream
třídy) i výstupní datové proudy (šablony basic_ostream
tří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_type znaku . |
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;
Návratová hodnota
true
je-li rdstate & badbit
nenulová; jinak false
.
Další informace naleznete v badbit
té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 goodbit
je .
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
, eofbit
a badbit
. Otestujte tyto příznaky pomocí good
, bad
eof
, 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.
Návratová hodnota
Objekt this
streamu, do kterého kopírujete příznaky.
Poznámky
Členová funkce hlásí událost erase_event
zpě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_event
zpětného volání . Pokud je kopie dokončena, state&exceptions
je nenulová, funkce efektivně volá clear
s argumentem rdstate
. *this
Vrá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;
Návratová 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 eofbit
té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.
Návratová 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;
Návratová hodnota
true
pokud rdstate & (badbit|failbit)
je nenulová, jinak false
.
Další informace naleznete v failbit
té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ě.
Návratová 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;
Návratová hodnota
true
pokud rdstate == goodbit
(nejsou nastaveny žádné příznaky stavu), v opačném případě false
.
Další informace naleznete v goodbit
té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í.
Návratová 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
.tie
NULL
vrátí ukazatel.rdstate
vrátígoodbit
, pokud_Sb
je nenulový; v opačném případě vrátíbadbit
hodnotu .exceptions
vrátígoodbit
.flags
vrátískipws | dec
. Další informace najdete v tématechskipws
adec
.width
vrátí hodnotu 0.precision
vrátí hodnotu 6.fill
vrátí znak mezery.getloc
vrátílocale::classic
.iword
vrátí nuluNULL
apword
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_type
znaku .
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.
Návratová 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;
Návratová 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;
Návratová 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;
Návratová 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):
flag | 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á clear
se.
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.
Návratová 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 cin
cout
zaruč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.
Návratová 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
Konvence