30 Input/output library [input.output]

30.7 Formatting and manipulators [iostream.format]

30.7.6 Standard manipulators [std.manip]

Заголовок <iomanip> определяет несколько функций, которые поддерживают экстракторы и средства вставки, которые изменяют информацию, поддерживаемую классом ios_­base и его производными классами.

unspecified resetiosflags(ios_base::fmtflags mask);

Returns: Объект неопределенного типа, такой, что если out это объект типа, basic_­ostream<charT, traits> тогда выражение out << resetiosflags(mask) ведет себя так, как если бы оно было вызвано f(out, mask), или если in это объект типа, basic_­istream<charT, traits> тогда выражение in >> resetiosflags(​mask) ведет себя так, как если бы оно было вызвано f(in, mask), где функция f определяется как:326

void f(ios_base& str, ios_base::fmtflags mask) {
  // reset specified flags
  str.setf(ios_base::fmtflags(0), mask);
}

Выражение out << resetiosflags(mask) должно иметь тип basic_­ostream<charT, traits>& и значение out. Выражение in >> resetiosflags(mask) должно иметь тип basic_­istream<charT, traits>& и значение in.

unspecified setiosflags(ios_base::fmtflags mask);

Returns: Объект неопределенного типа, такой, что если out это объект типа, basic_­ostream<charT, traits> тогда выражение out << setiosflags(mask) ведет себя так, как если бы оно было вызвано f(out, mask), или если in это объект типа, basic_­istream<charT, traits> тогда выражение in >> setiosflags(mask) ведет себя так, как если бы оно было вызвано f(in, mask), где функция f определяется как:

void f(ios_base& str, ios_base::fmtflags mask) {
  // set specified flags
  str.setf(mask);
}

Выражение out << setiosflags(mask) должно иметь тип basic_­ostream<charT, traits>& и значение out. Выражение in >> setiosflags(mask) должно иметь тип basic_­istream<charT,
traits>&
и значение in.

unspecified setbase(int base);

Returns: Объект неопределенного типа, такой, что если out это объект типа, basic_­ostream<charT, traits> тогда выражение out << setbase(base) ведет себя так, как если бы оно было вызвано f(out, base), или если in это объект типа, basic_­istream<charT, traits> тогда выражение in >> setbase(base) ведет себя так, как если бы оно было вызвано f(in, base), где функция f определяется как:

void f(ios_base& str, int base) {
  // set basefield
  str.setf(base ==  8 ? ios_base::oct :
      base == 10 ? ios_base::dec :
      base == 16 ? ios_base::hex :
      ios_base::fmtflags(0), ios_base::basefield);
}

Выражение out << setbase(base) должно иметь тип basic_­ostream<charT, traits>& и значение out. Выражение in >> setbase(base) должно иметь тип basic_­istream<charT, traits>& и значение in.

unspecified setfill(char_type c);

Returns: Объект неопределенного типа, такой, что if out является объектом типа basic_­ostream<charT, traits> и c имеет тип, charT тогда выражение out << setfill(c) ведет себя так, как если бы оно было вызвано f(out, c), где функция f определяется как:

template<class charT, class traits>
void f(basic_ios<charT, traits>& str, charT c) {
  // set fill character
  str.fill(c);
}

Выражение out << setfill(c) должно иметь тип basic_­ostream<charT, traits>& и значение out.

unspecified setprecision(int n);

Returns: Объект неопределенного типа, такой, что если out это объект типа, basic_­ostream<charT, traits> тогда выражение out << setprecision(n) ведет себя так, как если бы оно было вызвано f(out, n), или если in это объект типа, basic_­istream<charT, traits> тогда выражение in >> setprecision(n) ведет себя так, как если бы оно было вызвано f(in, n), где функция f определяется как:

void f(ios_base& str, int n) {
  // set precision
  str.precision(n);
}

Выражение out << setprecision(n) должно иметь тип basic_­ostream<charT, traits>& и значение out. Выражение in >> setprecision(n) должно иметь тип basic_­istream<charT, traits>& и значение in.

unspecified setw(int n);

Returns: Объект неопределенного типа, такой, что если out является экземпляром, basic_­ostream<charT, traits> тогда выражение out << setw(n) ведет себя так, как если бы оно было вызвано f(out, n), или если in это объект типа, basic_­istream<charT, traits> то выражение in >> setw(n) ведет себя так, как если бы оно было вызвано f(in, n), где функция f определяется как:

void f(ios_base& str, int n) {
  // set width
  str.width(n);
}

Выражение out << setw(n) должно иметь тип basic_­ostream<charT, traits>& и значение out. Выражение in >> setw(n) должно иметь тип basic_­istream<charT, traits>& и значение in.

Выражение cin >> resetiosflags(ios_­base​::​skipws) очищается ios_­base​::​skipws во флагах формата, хранящихся в basic_­istream<charT, traits> объекте cin (так же, как cin >> noskipws), а выражение cout << resetiosflags(ios_­base​::​showbase) очищается ios_­base​::​showbase во флагах формата, хранящихся в basic_­ostream<charT, traits> объекте cout (как cout << noshowbase).