30 Input/output library [input.output]

30.5 Iostreams base classes [iostreams.base]

30.5.5 Class template basic_­ios [ios]

30.5.5.3 Member functions [basic.ios.members]

basic_ostream<charT, traits>* tie() const;

Returns: Выходная последовательность, которая tied должна (синхронизироваться) с последовательностью, управляемой буфером потока.

basic_ostream<charT, traits>* tie(basic_ostream<charT, traits>* tiestr);

Requires: Если tiestr не равно нулю, он tiestr не должен быть доступен при просмотре связанного списка связанных объектов потока, начиная с tiestr->tie().

Postconditions: tiestr == tie().

Returns: Предыдущее значение tie().

basic_streambuf<charT, traits>* rdbuf() const;

Returns: Указатель на streambuf связанный с потоком.

basic_streambuf<charT, traits>* rdbuf(basic_streambuf<charT, traits>* sb);

Postconditions: sb == rdbuf().

Effects: Звонки clear().

Returns: Предыдущее значение rdbuf().

locale imbue(const locale& loc);

Effects: Вызывает ios_­base​::​imbue(loc) ([ios.base.locales]), а если rdbuf() != 0 то rdbuf()->pubimbue(loc) ([streambuf.locales]).

Returns: Приоритетное значение ios_­base​::​imbue().

char narrow(char_type c, char dfault) const;

Returns: use_­facet<ctype<char_­type>>(getloc()).narrow(c, dfault)

char_type widen(char c) const;

Returns: use_­facet<ctype<char_­type>>(getloc()).widen(c)

char_type fill() const;

Returns: Символ, используемый для заполнения (заполнения) преобразования вывода до указанной ширины поля.

char_type fill(char_type fillch);

Postconditions: traits​::​eq(fillch, fill()).

Returns: Предыдущее значение fill().

basic_ios& copyfmt(const basic_ios& rhs);

Effects: Если (this == &rhs) ничего не делает. В противном случае присваивает объектам *this -членам соответствующих объектов-членов rhs следующим образом:

  1. 1.вызывает каждую зарегистрированную пару обратных вызовов (fn, index) как (*fn)(erase_­event, *this, index);

  2. 2.присваивается объектам *this -членам соответствующих объектов-членов rhs, за исключением того, что

    • rdstate(),, rdbuf()и exceptions() остаются без изменений;

    • копируется содержимое массивов, на которые указывает pword и iword , а не сами указатели;296 а также

    • если какие-либо вновь сохраненные значения указателя *this указывают на объекты, хранящиеся вне объекта, rhs и эти объекты уничтожаются при rhs уничтожении, вновь сохраненные значения указателя изменяются, чтобы указывать на вновь созданные копии объектов;

  3. 3.вызывает каждую пару обратных вызовов, скопированную из rhs as (*fn)(copyfmt_­event, *this, index);

  4. 4.звонки exceptions(rhs.exceptions()).

[ Note: Второй проход через пары обратного вызова позволяет pword обнулить скопированное значение, либо глубоко скопировать его референт, либо подсчитать ссылку, либо выполнить другие специальные действия. ]end note

Postconditions: Постусловия этой функции указаны в таблице 114.

Таблица 114 - basic_­ios​::​copyfmt() эффекты
ЭлементЦенить
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()

Returns: *this.

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);

Requires: sb != nullptr.

Effects: Связывает basic_­streambuf объект, на который указывает sb этот поток, без вызова clear().

Postconditions: rdbuf() == sb.

Throws: Ничего такого.

Это предполагает бесконечное количество копий, но реализация может отслеживать максимальный элемент массивов, который не равен нулю.