Namespaces
Variants

std:: setw

From cppreference.net
< cpp ‎ | io ‎ | manip
Определено в заголовке <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);
}

Примечания

Свойство ширины потока будет сброшено в ноль (что означает "не указано"), если вызывается любая из следующих функций:

  • Ввод
  • Вывод

Точные эффекты, которые этот модификатор оказывает на ввод и вывод, различаются между отдельными функциями ввода-вывода и описаны на каждой странице перегрузки 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 )
изменяет символ заполнения
(шаблон функции)
устанавливает расположение символов заполнения
(функция)
управляет использованием префикса для указания системы счисления
(функция)