Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

60 Глава 2

Манипуляторы определены в заголовочном файле <iomanip>, поэтому вам пона- добится для него добавить директиву. Манипулятором, который вам не- обходим, будет setw (n). Он выводит значение, следующее за ним, выравнивая его в поле пробелов шириной n, то есть setw (6) представит следующее за ним значение в поле шириной 6 пробелов. Посмотрим на это в действии.

Чтобы получить вывод более похожий на тот, что вам нужен, вы можете изменить программу следующим образом:

Описание полученных результатов

Среди изменений, внесенных в последнем примере — добавление директивы ♦include для заголовка <iomanip>, добавление объявления using для имени setw из пространства имен std и вставка манипулятора setw () в выходной поток перед вы- водом значений каждой переменной, так что их значения выводятся в поля шириной в шесть символов. В результате вы получите симпатичный четкий вывод, в котором два значения разделены:

1234 5678

Обратите внимание, что манипулятор setw () работает только с единственным выходным значением, которое следует непосредственно за его вставкой в поток. Вы должны вставлять манипуляторы непосредственно перед каждым значением, которое хотите выровнять в пределах поля определенной ширины. Если вы вставите только один setw (), он воздействует лишь на первое значение, отправленное в выходной поток вслед за ним. Любые последующие значения будут выведены в обычной мане- ре. Можете убедиться в этом, исключив второй setw (6) и его операцию вставки из последнего примера.

Управляющие последовательности

Когда вы пишете символьную строку, заключенную в двойные кавычки, то мо- жете включить в нее специальные символы, называемые управляющими последо- вательностями (escape sequences). Они так называются потому, что позволяют по- местить в строку символы, которые не могут быть представлены иным образом, за

Данные, переменные и вычисления 61

счет того, что они избегают (escaping) обычного процесса интерпретации символов. Управляющая последовательность начинается с символа обратного слеша \, который заставляет компилятор интерпретировать следующий за ним символ особым обра- зом. Например, символ табуляции записывается, как \t, так что t понимается компи- лятором как табуляция в строке, а не буква 't'. Взгляните на следующие два оператора вывода:

Они выведут на экран следующие строки:

Комбинация \t во втором операторе вывода сдвигает следующий за ней текст в первую позицию табуляции.

Фактически, вместо использования endl вы можете применять управляющую по- следовательность символа новой строки \п в каждой строке, поэтому предыдущие операторы можно переписать так

:

В табл. 2.3 даны некоторые управляющие последовательности, которые могут вам пригодиться.

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

Вы также можете применять символы, специфицированные управляющими после- довательностями, в инициализации переменных типа char, например:

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