namespace std { template <class charT, class traits = char_traits<charT>> class basic_ios : public ios_base { public: using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; using off_type = typename traits::off_type; using traits_type = traits; // [iostate.flags], flags functions explicit operator bool() const; bool operator!() const; iostate rdstate() const; void clear(iostate state = goodbit); void setstate(iostate state); bool good() const; bool eof() const; bool fail() const; bool bad() const; iostate exceptions() const; void exceptions(iostate except); // [basic.ios.cons], constructor/destructor explicit basic_ios(basic_streambuf<charT, traits>* sb); virtual ~basic_ios(); // [basic.ios.members], members basic_ostream<charT, traits>* tie() const; basic_ostream<charT, traits>* tie(basic_ostream<charT, traits>* tiestr); basic_streambuf<charT, traits>* rdbuf() const; basic_streambuf<charT, traits>* rdbuf(basic_streambuf<charT, traits>* sb); basic_ios& copyfmt(const basic_ios& rhs); char_type fill() const; char_type fill(char_type ch); locale imbue(const locale& loc); char narrow(char_type c, char dfault) const; char_type widen(char c) const; basic_ios(const basic_ios&) = delete; basic_ios& operator=(const basic_ios&) = delete; protected: basic_ios(); void init(basic_streambuf<charT, traits>* sb); void move(basic_ios& rhs); void move(basic_ios&& rhs); void swap(basic_ios& rhs) noexcept; void set_rdbuf(basic_streambuf<charT, traits>* sb); }; }
explicit basic_ios(basic_streambuf<charT, traits>* sb);
Effects: Создает объект класса basic_ios, присваивая начальные значения его объектам-членам путем вызова init(sb).
basic_ios();
Effects: Создает объект класса basic_ios ([ios.base.cons]), оставляя его объекты-члены неинициализированными. Объект должен быть инициализирован вызовом basic_ios::init до его первого использования или до его уничтожения, в зависимости от того, что произойдет раньше; в противном случае поведение не определено.
~basic_ios();
void init(basic_streambuf<charT, traits>* sb);
Postconditions: Постусловия этой функции указаны в таблице113.
Элемент | Ценить |
rdbuf() | sb |
tie() | 0 |
rdstate() | goodbit еслиsb не является нулевым указателем, в противном случаеbadbit. |
exceptions() | goodbit |
flags() | skipws | dec |
width() | 0 |
precision() | 6 |
fill() | widen(' ') |
getloc() | копия значения, возвращаемогоlocale() |
iarray | нулевой указатель |
parray | нулевой указатель |
basic_ostream<charT, traits>* tie() const;
Returns: Выходная последовательность, которая tied должна (синхронизироваться) с последовательностью, управляемой буфером потока.
basic_ostream<charT, traits>* tie(basic_ostream<charT, traits>* tiestr);
Requires: Еслиtiestr не равно нулю, онtiestr не должен быть доступен при просмотре связанного списка связанных объектов потока, начиная с tiestr->tie().
basic_streambuf<charT, traits>* rdbuf() const;
basic_streambuf<charT, traits>* rdbuf(basic_streambuf<charT, traits>* sb);
locale imbue(const locale& loc);
Effects: Вызывает ios_base::imbue(loc) ([ios.base.locales]), а если rdbuf() != 0 то rdbuf()->pubimbue(loc) ([streambuf.locales]).
char narrow(char_type c, char dfault) const;
char_type widen(char c) const;
char_type fill() const;
Returns: Символ, используемый для заполнения (заполнения) преобразования вывода до указанной ширины поля.
char_type fill(char_type fillch);
basic_ios& copyfmt(const basic_ios& rhs);
Effects: Если (this == &rhs) ничего не делает. В противном случае присваивает объектам *this -членам соответствующих объектов-членовrhs следующим образом:
1.вызывает каждую зарегистрированную пару обратных вызовов(fn, index) как (*fn)(erase_event, *this, index);
2.присваивается объектам*this -членам соответствующих объектов-членов rhs, за исключением того, что
rdstate(),,rdbuf()иexceptions() остаются без изменений;
копируется содержимое массивов, на которые указываетpword иiword , а не сами указатели;296 а также
если какие-либо вновь сохраненные значения указателя*this указывают на объекты, хранящиеся вне объекта,rhs и эти объекты уничтожаются приrhs уничтожении, вновь сохраненные значения указателя изменяются, чтобы указывать на вновь созданные копии объектов;
3.вызывает каждую пару обратных вызовов, скопированную изrhs as (*fn)(copyfmt_event, *this, index);
4.звонкиexceptions(rhs.exceptions()).
[ Note: Второй проход через пары обратного вызова позволяетpword обнулить скопированное значение, либо глубоко скопировать его референт, либо подсчитать ссылку, либо выполнить другие специальные действия. ] — end note
Postconditions: Постусловия этой функции указаны в таблице114.
Элемент | Ценить |
rdbuf() | unchanged |
tie() | rhs.tie() |
rdstate() | unchanged |
exceptions() | rhs.exceptions() |
flags() | rhs.flags() |
width() | rhs.width() |
precision() | rhs.precision() |
fill() | rhs.fill() |
getloc() | rhs.getloc() |
void move(basic_ios& rhs);
void move(basic_ios&& rhs);
Postconditions:*this должен иметь состояние, которое rhs было до вызова функции, за исключением тогоrdbuf() , что должен возвращать 0.rhs должен быть в допустимом, но неуказанном состоянии, за исключением тогоrhs.rdbuf() , что должен возвращать то же значение, что и перед вызовом функции, и rhs.tie() должен возвращать 0.
void swap(basic_ios& rhs) noexcept;
Effects: Состояниями*this иrhs необходимо поменять местами, за исключением тогоrdbuf() , что они должны возвращать то же значение, что и перед вызовом функции, иrhs.rdbuf() должны возвращать то же значение, что и перед вызовом функции.
void set_rdbuf(basic_streambuf<charT, traits>* sb);
Effects: Связываетbasic_streambuf объект, на который указываетsb этот поток, без вызова clear().
Это предполагает бесконечное количество копий, но реализация может отслеживать максимальный элемент массивов, который не равен нулю.
explicit operator bool() const;
bool operator!() const;
iostate rdstate() const;
void clear(iostate state = goodbit);
Postconditions: Если rdbuf() != 0 тогда state == rdstate(); иначе rdstate() == (state | ios_base::badbit).
Effects: Если((state | (rdbuf() ? goodbit : badbit)) & exceptions()) == 0, вернется. В противном случае функция генерирует объект класса basic_ios::failure, построенный со значениями аргументов, определяемыми реализацией.
void setstate(iostate state);
Effects: Звонки clear(rdstate() | state) (которые могут бросить basic_ios::failure).
bool good() const;
bool eof() const;
bool fail() const;
bool bad() const;
iostate exceptions() const;
void exceptions(iostate except);
Проверка badbit также на fail() историческую практику.