Форматирование вывода с iomanip
Управляйте шириной, точностью, выравниванием и системами счисления с помощью заголовка iomanip.
«Форматирование вывода с iomanip» — бесплатный урок C++ Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Заголовок iomanip
Заголовочный файл <iomanip> предоставляет манипуляторы — специальные объекты, которые передаются в cout, чтобы изменить состояние его форматирования.
std::setw: ширина поля
std::setw(n) задаёт минимальную ширину только для следующего поля. Более короткие значения дополняются.
#include <iomanip>
std::cout << std::setw(10) << "Name" << std::setw(5) << "Age\n";
std::cout << std::setw(10) << "Ada" << std::setw(5) << 36 << "\n";std::setfill: символ заполнения
По умолчанию setw заполняет поле пробелами. Измените символ заполнения с помощью setfill — эта настройка сохраняется.
std::cout << std::setfill('0') << std::setw(4) << 42;
// 0042std::left и std::right
Выравнивайте текст внутри поля setw. По умолчанию используется выравнивание по правому краю.
std::cout << std::left << std::setw(10) << "Ada" << "|\n";
std::cout << std::right << std::setw(10) << "Ada" << "|\n";std::setprecision
Управляйте количеством значащих цифр или, вместе с std::fixed, количеством знаков после запятой.
double pi = 3.14159265;
std::cout << std::setprecision(4) << pi << "\n"; // 3.142
std::cout << std::fixed << std::setprecision(2) << pi; // 3.14Форматы std::fixed, std::scientific и std::hexfloat
Переключайтесь между форматами чисел с помощью std::fixed, std::scientific и std::hexfloat.
double x = 12345.6789;
std::cout << std::scientific << x << "\n"; // 1.234568e+04
std::cout << std::fixed << x << "\n"; // 12345.678900Системы счисления для целых: hex, oct, dec
Выводите целые числа в разных системах счисления. std::showbase добавляет префикс: 0x или 0.
int n = 255;
std::cout << std::hex << n << "\n"; // ff
std::cout << std::oct << n << "\n"; // 377
std::cout << std::dec << n << "\n"; // 255 (default)std::boolalpha
Выводите логические значения словами вместо 1 и 0.
std::cout << std::boolalpha << true << "\n"; // true
std::cout << std::noboolalpha << true << "\n"; // 1Манипуляторы сохраняют состояние
Большинство манипуляторов действуют, пока их не изменят. setw — исключение: он применяется только к следующему полю.
std::quoted для безопасных строк
std::quoted из <iomanip> заключает строку в двойные кавычки и экранирует содержащиеся в ней кавычки. Идеально подходит для строк журналов.
std::string name = "Ada \"Countess\"";
std::cout << std::quoted(name);
// "Ada \"Countess\""C++20 std::format
Современный C++20 заменяет большую часть использования iomanip на std::format — типобезопасный программный интерфейс в стиле printf.
#include <format>
std::cout << std::format("{:>10} | {:.2f}\n", "pi", 3.14159);Быстрая проверка
Какой манипулятор необходимо применять заново для каждого поля вывода?
Итоги
<iomanip> предоставляет манипуляторы для задания ширины, точности, выравнивания, системы счисления и кавычек. setw действует только для одного поля, остальные настройки сохраняются. В C++20 предпочитайте std::format для более понятного форматирования.
Часто задаваемые вопросы
Урок «Форматирование вывода с iomanip» бесплатный?
Да — полный текст урока «Форматирование вывода с iomanip» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Форматирование вывода с iomanip»?
Управляйте шириной, точностью, выравниванием и системами счисления с помощью заголовка iomanip. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Форматирование вывода с iomanip»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Корректное использование std::cin и std::cout
- Форматирование вывода с iomanip
- Безопасное чтение ввода с помощью getline
- Работа с std::cerr и std::clog