Вывод на стандартное устройство ошибок — КиберПедия 

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

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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

2021-12-11 26
Вывод на стандартное устройство ошибок 0.00 из 5.00 0 оценок
Заказать работу

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

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

 

#include <iostream>

void main(void)

{

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

}

Откомпилируйте и запустите эту программу. Далее попытайтесь перенаправить вывод программы в файл, используя оператор переназначения вывода:

С:\> CERR > FILENAME.EXT <ENTER>

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

УПРАВЛЕНИЕ ШИРИНОЙ ВЫВОДА

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

#include <iostream.h>

#include <iomanip.h>

void main (void)

{

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

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

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

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

}

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

С:\> SETW <ENTER>

Мое любимое число равно1001

Мое любимое число равно1001

Мое любимое число равно 1001

Мое любимое число равно 1001

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

 

Замечание: Предыдущая программа использует заголовочный файл IOMANIP.H. Для изучения возможностей, предоставляемых этим файлом полезно напечатать и исследовать содержимое этого файла. Как и в случае с заголовочным файлом IOSTREAM.H вы найдете данный файл внутри подкаталога INCLUDE, который находится в каталоге с файлами вашего компилятора.

Резюме

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

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

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

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

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

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

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


Дополнительные примеры

Пример 1.

Здесь первая строка представляет собой комментарий. Начало и конец комментария ограничиваются парами символов /* и */. Все, что расположено между этими символами, компилятор игнорирует.

 

Вторая строка программы содержит директиву препроцессора:

 

#include <stdio.h>

 

Она сообщает компилятору информацию о необходимости подключить к тексту программы содержимое файла stdio.h, в котором находится описание (прототип) библиотечной функции printf () — функции вывода на экран.

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

 

Void main()

 

Любая программа на Си обязательно содержит главную функцию, имя которой — main. Слово void обозначает то, что главная функция не возвращает никаких значений в результате своего выполнения, а пустые скобки обозначают отсутствие аргументов. Тело главной функции заключается между парой фигурных скобок, следующих после заголовка.

 

Текст программы содержит всего лишь один исполняемый оператор — это оператор вывода на экран. Вывод осуществляется путем обращения к стандартной библиотечной функции printf(). В результате его выполнения на экран выведется текст:

 

Здравствуй, Мир!

 

Впереди данной строки и после нее будет пропущено по одной пустой строке, что обеспечивается наличием управляющих символов \n.

 

Следующий пример содержит программу, выполняющую те же самые действия, но написанную на Си++.

 

Пример 2.

 

// Ваша первая программа на Си++

#include <iostream.h>

Void main()

{

соut:"\n3дравствуй Мир!\n";

}

 

Первое отличие от программы из примера 1 состоит в форме комментария. В Си++ можно использовать строчный комментарий, который начинается с символов // и заканчивается концом строки. Для организации вывода на экран к программе подключается специальная библиотека объектов, заголовочный файл которой имеет имя iostream.h. Вывод осуществляется посредством объекта cout из этой библиотеки.

 

В примере 1 используется механизм форматного ввода/вывода, характерный для Си. В примере 2 работает механизм потокового ввода/вывода, реализованный в Си++. Преемственность Си++ по отношению к Си выражается в том, что программа из примера 1 будет восприниматься компилятором Си++, т. е. эта программа исполнима в любой системе программирования, ориентированной на Си++.

Рассмотрим еще один пример программы на Си/Си++. Сопоставим ее с аналогичной программой на Паскале.

 

Пример 3. Деление простых дробей (см. разд. 3.1):

a/b: с/а = т/п

В этом примере появился целый ряд новых элементов по сравнению с предыдущим. Первая строка в теле главной функции является объявлением пяти переменных целого типа — int. Далее наряду с уже знакомым оператором форматного вывода на экран используется оператор форматного ввода с клавиатуры — scanf (). Это также стандартная функция из библиотеки ввода/вывода, подключаемая к программе с помощью файла stdio.h. Первый аргумент этой функции %d является спецификацией формата вводимых значений. В данном случае он указывает на то, что с клавиатуры будет вводиться целое число. Перед именем вводимой переменной принято писать символ &. Это необходимо делать для правильной работы функции scanf (). Смысл данного символа будет пояснен позже. В отличие от Паскаля в качестве знака присваивания используется символ =. Однако читать его надо как «присвоить». Спецификации формата %d используются и при организации вывода на экран целых чисел с помощью функции printf ().


Поделиться с друзьями:

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

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.02 с.