ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 2) онлайн
Манипулятор setw
Мы уже говорили о том, что манипуляторы — это особые операции, использу- емые совместно с операцией вставки << для того, чтобы видоизменять вывод, ко- торый делает программа. Мы познакомились с манипулятором endl, а теперь вве- дем в рассмотрение еще один манипулятор — setw, который изменяет ширину поля вывода.
Можно рассматривать каждую переменную, выводимую с помощью объекта cout, как занимающую некоторое поле — воображаемое пространство с опреде- ленной длиной. По умолчанию такое поле имеет достаточный размер для того, чтобы хранить нужную переменную. Так, например, целое число 567 займет размер в 3 символа, а текстовая строка "pajamas" — 7 символов. Разумеется, су- ществуют ситуации, когда подобный механизм не является удобным. Приведем пример программы WIDTH1, печатающей названия городов и численность их на- селения в виде двух столбцов:
//width1.cpp
//демонстрирует необходимость применения манипулятора setw #include <iostream> using namespace std;
int main() {
long pop1 = 4789426, pop2 = 274124, pop3 = 9761;
cout << "Город " << "Нас." << endl
<<"Москва " << pop1 <<endl
<<"Киров " << pop2 <<endl
<<"Угрюмовка " <<pop3 <<endl;
return 0;
}
Вывод программы будет выглядеть следующим образом:
Город Нас. Москва 4789426 Киров 274124 Угрюмовка 9761
Очевиден недостаток такого формата печати: очень неудобно визуально срав- нивать числа между собой. Было бы гораздо приятней читать печатаемую ин- формацию, если бы второй столбец был выровнен по правому краю. Но тогда нам пришлось бы вставлять в имена городов нужное количество пробелов, что также неудобно. Теперь мы приведем пример программы .WIDTH2, решающей данную проблему путем использования манипулятора setw. который определяет длину полей имен городов и численности населения:
//width2.cpp
//применение манипулятора setw #include <iostream>
#include <iomanip> // для использования setw
using namespace std;
int main() {
long pop1 = 8425785, pop2 = 47, pop3 = 9761;
cout << setw(9) << "Город" << setw(12) << "Население" << endl
<< setw(9) << "Москва" << setw(12) << pop1 << endl << setw(9) << "Киров" << setw(12) << pop2 << endl << setw(9) << "Угрюмовка" << setw(12) << pop3 << endl; return 0;
}
Манипулятор setw печатает число или строку, следующую за ним в потоке, в поле фиксированной длины n, где n — аргумент манипулятора setw(n). Значе- ние переменной, помещаемой в поле, выравнивается справа. Рисунок 2.8 демон- стрирует, как это делается. Для того чтобы избежать переполнения значения переменной, хранящей численность населения города, в низкоразрядных опера- ционных системах для такой переменной определен тип long.

Рис. 2.8. Длина полей и setw
Вот результат работы программы WIDTH2:
Город Население
Москва 8425785
Киров 47
Угрюмовка 9761
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
Схожі підручники
- Економіка підприємства. Методичка
- И ботаники делают бизнес
- Розділ ІІ (ЗМ 2) Господарство та економічна думка суспільства Європейської цивілізації в період середньовіччя (кінець V – ХV ст.)
- Сила воли. Как развить и укрепить (онлайн)
- ПСИХОЛОГО-ПЕДАГОГІЧНІ ОСНОВИ МІЖОСОБИСТІСНОГО СПІЛКУВАННЯ НАВЧАЛЬНИЙ ПОСІБНИК (онлайн)
- Методичні вказівки до виконання практичного заняття на тему «Дробово-лінійне програмування»
