Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5-С++-22 марта-2012.doc
Скачиваний:
12
Добавлен:
15.09.2019
Размер:
1.48 Mб
Скачать

1.11.5. Вывод восьмеричных и шестнадцатеричных значений

Программы, рассмотренные ранее до сих пор, выводили числа в десятичном виде. В зависимости от назначения ваших программ вам, возможно, потребуется выводить числа в восьмеричном или шестнадцатеричном виде. Для этого можно разместить модификаторы dec, oct и hex внутри выходного потока. Следующая программа LR5-22.cpp в примере 5.22 использует эти модификаторы для вывода значений в десятичном, восьмеричном и шестнадцатеричном виде:

Пример 5.22.

/*Программа LR5-Primer22*/

#include <iostream.h>

int main()

{

cout << "Восьмеричный: " << oct << 10 << ' ' << 20 << endl;

 cout << "Шестнадцатеричный: " << hex << 10 << ' ' << 20 << endl;

 cout << "Десятичный: " << dec << 10 << ' ' << 20 << endl;

getchar();

return 0;

}

Когда вы откомпилируете и запустите эту программу, на экране появится следующий результат:

Восьмеричный: 12 24

Шестнадцатеричный: а 14

Десятичный: 10 20

Примечание: Когда вы используете один из модификаторов для выбора восьмеричного, шестнадцатеричного или десятичного вывода, ваш выбор будет оставаться в силе до тех пор, пока программа не закончится или пока вы не используете другой модификатор.

1.11.6. Вывод на стандартное устройство ошибок

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

Если вашей программе нужно вывести сообщение об ошибке, вы должны использовать выходной поток cerr. C++ связывает cerr со стандартным устройством ошибок операционной системы. Следующая программа LR5-23.cpp в примере 5.23 использует выходной поток cerr для вывода на экран сообщения "Это сообщение появляется всегда ".

Пример 5.23.

/*Программа LR5-Primer23*/

#include <iostream.h>

#include<conio.h>

int main()

{

cerr << "Это сообщение появляется всегда";

getch();

return 0;

}

Тестирование:

Откомпилируйте и запустите эту программу. Так как операционная система не позволит вашим программам перенаправить вывод, записываемый на стандартное устройство ошибок, сообщение появится на вашем экране.

1.11.7. Управление шириной вывода

Несколько предыдущих программ выводили числа на экран. Чтобы гарантировать правильное отображение этих чисел (с правильной расстановкой пробелов), программы включали пробелы до и после чисел. При выводе на cout или cerr ваши программы могут указать ширину вывода каждого числа, используя модификатор setw (установка ширины). С помощью setw программы указывают минимальное количество символов, занимаемое числом. Например, следующая программа в примере 5.24 использует модификатор setw для выбора ширины 3, 4, 5 и 6 для числа 1001. Чтобы использовать модификатор setw, ваша программа LR5-24.cpp в примере 5.24 должна включать заголовочный файл iomanip.h.

Пример 5.24.

/*Программа LR5-Primer24*/

#include <iostream.h>

#include <iomanip.h>

#include<conio.h>

int main ()

{

cout << "Мое любимое число равно" << setw(3) << 1001 << endl;

cout << "Мое любимое число равно" << setw(4) << 1001 << endl;

cout << "Мое любимое число равно" << setw(5) << 1001 << endl;

cout << "Мое любимое число равно" << setw(6) << 1001 << endl;

cout << "Мое любимое число равно" << setw(9) << 1001 << endl;

getch();

return 0;

}

Тестирование:

Когда вы откомпилируете и запустите эту программу, на экране появится следующий вывод:

Если вы указываете ширину с помощью setw, вы указываете минимальное количество символьных позиций, занимаемых числом. В предыдущей программе модификатор setw(3) указывал минимум три символа. Однако, так как число 1001 потребовало больше трех символов, cout использовал реально требуемое количество, которое в данном случае равнялось четырем. Следует отметить, что при использовании setw для выбора ширины, указанная ширина действительна для вывода только одного числа. Если вам необходимо указать ширину для нескольких чисел, вы должны использовать setw несколько раз.

Замечание: Предыдущая программа использует заголовочный файл <iomanip.h>. Вам, возможно, понадобится сейчас напечатать и исследовать содержимое этого файла. Как и в случае с заголовочным файлом <iostream.h> вы найдете данный файл внутри подкаталога INCLUDE, который находится в каталоге с файлами вашего компилятора.

Запомните про потоковый вывод:

  • выходной поток cout позволяет вам выводить символы и числа;

  • используя специальные символы внутри выходного потока, ваша программа может указать новую строку, табуляцию и другие специальные возможности;

  • для продвижения курсора в начало следующей строки программы могут создать новую строку, используя символ \n или модификатор endl;

  • модификаторы dec, oct и hex позволяют программам выводить значения в десятичном, восьмеричном и шестнадцатеричном виде;

  • используя выходной поток cerr, программы могут записать сообщения в стандартное устройство ошибок операционной системы;

  • с помощью модификатора setw ваши программы могут управлять шириной вывода чисел.