Код | #include<iostream.h>
void main( void ) { cout << "╔═══════╦═══════╗" << endl << "║ячейка1║ячейка2║" << endl << "╠═══════╬═══════╣" << endl << "║Box1 ║Box2 ║" << endl << "╚═══════╩═══════╝" << endl; return; }
|

Цитата | к хелпам уже не относятся?
|
а Vingrad?
Код | Ширина --------------------------------------------------------------
По умолчанию вставки выводят минимальное число сим волов, которыми может бытьпредставлен операнд правой части. Для того, чтобы изменить э то умолчание, можно использовать удобные функции задания ширины вывода:
int ios::width(int w); // устанавливает поле ширины в w // и возвращает предыдущую ширину
int ios::width(); // возвращает текущую ширину -- // не внося никаких изменений
Значение width по умолчанию равно нулю, что эквивален тно выводу без дополнительных заполнителей. Ненулевая ширина означает, что вставки будут выполнять вывод не уже заданной ширины, и при необходимостибудут использованы заполнители до этой ширины. Отметим, что усечение ширины при этом не выпо лняется: если указанная ширина меньше фактического числа сим волов для представления вывода, то она будет проигнорирована (как при width, установленной равной нулю).
Например,
int i = 123; int old_w = cout.width(6); cout << i; // на выводе будет bbb123, где bbb = // пробелы. Затем ширина устанавлива // ется равной 0 cout.width(old_w); // восстановление предыдущей ширины // поля
Отметим, что после каждой форматированной вставки ши рина очищается в ноль, так что в
int i, j; ... cout.width(4); cout << i << " " << j;
i будет представлена минимум четырьмя символами, однако про бел в середине выражения и j будут представлены минимально необходимым числом символов.
Поля вывода --------------------------------------------------------------
Функция width() устанавливает минимальное число симво лов, использующееся в последующей операции вывода числа или строки. Так в результате следующих операций
cout.width(4); cout << '(' << 12 << ')';
получим число 12 в поле размером 4 символа, т.е.
(12)
Заполнение поля заданными символами или выравнивание можно установить с помощью функции fill().
Символ-заполнитель и направление дополнения зависят от установок внутренних флагов, отвечающих за эти параметры.
По умолчанию символом-заполнителем является пробел. Изменить данное умолчание позволяет функция fill:
int i = 123; cout.fill("*"); cout.width(6); cout << i;
// на дисплей будет выведено ***123
По умолчанию поле заполняется пробелами, а размер поля по умо лчанию есть 0, что означает "столько символов, сколько нужно" Вернуть размеру поля стандартное значение можно с помощью вы зова
cout.width(0); // ``столько символов, сколько надо''
Функция width() задает минимальное число символов. Если появи тся больше символов, они будут напечатаны все, поэтому
cout.width(4); cout << '(' << "121212" << ")\n"; напечатает
(121212)
Причина, по которой разрешено переполнение поля, а не усечение вывода, в том, чтобы избежать зависания при выводе. Лучше по лучить правильную выдачу, выглядящую некрасиво, чем расивую выдачу, являющуюся неправильной.
Вызов width() влияет только на одну следующую за ним операцию вывода, поэтому
cout.width(4); cout.fill('#'); cout << '(' << 12 << "),(" << '(' << 12 << ")\n";
напечатает
(##12),(12) а не (##12),(##12)
как можно было бы ожидать. Однако, заметьте, что если бы влия ние распространялось на все операции вывода чисел и строк, по лучился бы еще более неожиданный результат:
(##12#),(##12#)
С помощью стандартного манипулятора можно более элегантно за давать размераполя вывода.
Выравнивание полей --------------------------------------------------------------
По умолчанию устанавливается выравнивание по право му краю (дополнение символами-заполнителями влево). Эти умо лчания (а также прочие форматные флаги) можно изменять при по мощи функций setf и unsetf:
int i = 56; ... cout.width(6); cout.fill('#'); cout.setf(ios::left,ios::adjustfield); cout << i ;
// на дисплей будет выведено 56####
С помощью обращений к setf() можно управлять располо жением символов в пределах поля:
cout.setf(ios::left,ios::adjustfield); //влево cout.setf(ios::right,ios::adjustfield); //вправо cout.setf(ios::internal,ios::adjustfield); //внутреннее
Будет установлено выравнивание в поле вывода, определяемом фу нкцией ios::width(), причем не затрагивая других компонентов состояния потока.
Выравнивание можно задать следующим образом:
cout.width(4); cout << '(' << -12 << ")\n"; cout.width(4); cout.setf(ios::left,ios::adjustfield); cout <<'(' <<-12 <<")\n"; cout.width(4); cout.setf(ios::internal,ios::adjustfield); cout <<'(' <<-12 <<"\n"; что выдаст
(-12) (-12) (- 12)
Если установлен флаг выравнивания internal (внутренний), то символы добавляются между знаком и величиной. Как видно, ста ндартным является выравнивание вправо.
Второй аргумент, ios::adjustfield, сообщает setf, какие биты должны быть установлены.Первый аргумент, ios::left, сообщает setf, в какие именно значения устанавливаются эти биты. Альтернативно можно использовать манипуляторы setfill, setiosflags и resetiosflags, которые позволяют моди фицировать символ-заполнитель и направление дополненияпри фор матировании
Манипуляторы --------------------------------------------------------------
Более простой способ изменения состояния ширины и про чих переменных форматирования состоит в использовании специа льной функциообразной операции, называемой манипулятором. Мани пуляторы принимают в качестве аргументов ссылку на потоки воз вращают ссылку на тот же поток - поэтому манипуляторы могут объединяться в цепочку вставок (или извлечений из потока) для того,чтобы изменять состояния потока в виде побочного эффек та, без фактическоговыполнения каких-либовставок (или извлече ний).
Например,
cout << setw(4) << i << setw(6) << j;
эквивалентно более широкой записи
cout.width(4); cout << i; cout.width(6); cout << j;
setw представляет собой параметризованный манипуля тор объявление которого находится в iomanip.h. Прочие параме тризованные манипуляторы, setbase, setfill, setprecision, setiosflags и resetiosflags, работают аналогичнымобразом (см таблицу 4.1). Для того, чтобы использовать эти манипуляторы, ваша программа должна включать iomanip.h.
|
|