Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Š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;
Návratová 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.
Návratová 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;
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 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.
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 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ě.
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 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í.
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:
rdbufvrátí_Sb.tieNULLvrátí ukazatel.rdstatevrátígoodbit, pokud_Sbje nenulový; v opačném případě vrátíbadbithodnotu .exceptionsvrátígoodbit.flagsvrátískipws | dec. Další informace najdete v tématechskipwsadec.widthvrátí hodnotu 0.precisionvrátí hodnotu 6.fillvrátí znak mezery.getlocvrátílocale::classic.iwordvrátí nuluNULLapwordvrá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.
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á 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.
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 coutzaruč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