std:: setw
|
Определено в заголовке
<iomanip>
|
||
|
/* unspecified */
setw
(
int
n
)
;
|
||
При использовании в выражении
out
<<
std
::
setw
(
n
)
или
in
>>
std
::
setw
(
n
)
, устанавливает параметр
width
потока
out
или
in
точно в значение
n
.
Некоторые операции сбрасывают ширину в ноль (см.
ниже
), поэтому
std::setw
может потребоваться вызывать повторно для установки ширины при множественных операциях.
Содержание |
Параметры
| n | - | новое значение для ширины |
Возвращаемое значение
Объект неуказанного типа, такой что
-
Если
out
является объектом типа
std::
basic_ostream
<
CharT, Traits
>
, выражение
out
<<
setw
(
n
)
- имеет тип std:: basic_ostream < CharT, Traits > &
- имеет значение out
- ведет себя так, как если бы вызывало f ( out, n )
-
Если
in
является объектом типа
std::
basic_istream
<
CharT, Traits
>
, выражение
in
>>
setw
(
n
)
- имеет тип std:: basic_istream < CharT, Traits > &
- имеет значение in
- ведет себя так, как если бы вызывало f ( in, n )
где функция f определена как:
void f(std::ios_base& str, int n) { // установить ширину str.width(n); }
Примечания
Свойство ширины потока будет сброшено в ноль (что означает "не указано"), если вызывается любая из следующих функций:
- Ввод
- Вывод
-
- Перегрузки basic_ostream::operator<<() принимающие арифметические типы или указатели на void (на Этапе 3 num_put::put() )
- operator<<(basic_ostream&, char) и operator<<(basic_ostream&, char*)
- operator<<(basic_ostream&, basic_string&)
- std::put_money (внутри money_put::put() )
- std::quoted (при использовании с выходным потоком)
Точные эффекты, которые этот модификатор оказывает на ввод и вывод, различаются между отдельными функциями ввода-вывода и описаны на каждой странице перегрузки operator << и operator >> индивидуально.
Пример
#include <iomanip> #include <iostream> #include <sstream> int main() { std::cout << "no setw: [" << 42 << "]\n" << "setw(6): [" << std::setw(6) << 42 << "]\n" << "no setw, several elements: [" << 89 << 12 << 34 << "]\n" << "setw(6), several elements: [" << 89 << std::setw(6) << 12 << 34 << "]\n"; std::istringstream is("hello, world"); char arr[10]; is >> std::setw(6) >> arr; std::cout << "Input from \"" << is.str() << "\" with setw(6) gave \"" << arr << "\"\n"; }
Вывод:
no setw: [42] setw(6): [ 42] no setw, several elements: [891234] setw(6), several elements: [89 1234] Input from "hello, world" with setw(6) gave "hello"
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 183 | C++98 |
setw
could only be used with streams of
type std::ostream or std::istream |
usable with any
character stream |
Смотрите также
|
управляет шириной поля
(публичная функция-член
std::ios_base
)
|
|
|
изменяет символ заполнения
(шаблон функции) |
|
|
устанавливает расположение символов заполнения
(функция) |
|
|
управляет использованием префикса для указания системы счисления
(функция) |