10.4.1.2 Поля вывода.

   


Назад  |  Вперёд

Функция width() устанавливает минимальное число символов, использующееся в последующей операции вывода числа или строки. Так в результате следующих операций

           cout << '(';
           cout.width(4);
           cout << 12 << ')';

получим число 12 в поле размером 4 символа, т.е.

           (  12)

Заполнение поля заданными символами или выравнивание можно установить с помощью функции fill(), например:

           cout << '(';
           cout.width(4);
           cout.fill('#');
           cout << "ab" << ')';

напечатает

           (##ab)

По умолчанию поле заполняется пробелами, а размер поля по умолчанию есть 0, что означает "столько символов, сколько нужно". Вернуть размеру поля стандартное значение можно с помощью вызова

           cout.width(0); // ``столько символов, сколько надо''

Функция width() задает минимальное число символов. Если появится больше символов, они будут напечатаны все, поэтому

           cout << '(';
           cout.width(4);
           cout << "121212" << ")\n";

напечатает

           (121212)

Причина, по которой разрешено переполнение поля, а не усечение вывода, в том, чтобы избежать зависания при выводе. Лучше получить правильную выдачу, выглядящую некрасиво, чем красивую выдачу, являющуюся неправильной.

Вызов width() влияет только на одну следующую за ним операцию вывода, поэтому

           cout << '(';
           cout.width(4);
           cout.fill('#');
           cout << 12 << "),(" << '(' <<12 << ")\n";

напечатает

           (##12),(12)

а не

           (##12),(##12)

как можно было бы ожидать. Однако, заметьте, что если бы влияние распространялось на все операции вывода чисел и строк, получился бы еще более неожиданный результат:

           (##12#),(##12#)

С помощью стандартного манипулятора, показанного в 10.4.2.1, можно более элегантно задавать размеры поля вывода.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.