- Вывод в языке C++ через cout
- Использование объекта cout
- Задание ширины поля вывода
- Вывод действительных чисел
- Клуб программистов
- Delphi programming
- Урок З. Вывод сообщений на экран
- ИСПОЛЬЗОВАНИЕ cout ДЛЯ ВЫВОДА ЧИСЕЛ
- ВЫВОД НЕСКОЛЬКИХ ЗНАЧЕНИЙ ОДНОВРЕМЕННО
- ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ СИМВОЛОВ ВЫВОДА
- Другие специальные символы
- ВЫВОД ВОСЬМЕРИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЗНАЧЕНИЙ
- ВЫВОД НА СТАНДАРТНОЕ УСТРОЙСТВО ОШИБОК
- УПРАВЛЕНИЕ ШИРИНОЙ ВЫВОДА
- ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ
- 1.8 – Пробельные символы и базовое форматирование кода
- Базовое форматирование
- Автоматическое форматирование
Вывод в языке C++ через cout
Использование объекта cout
Для стандартного вывода (вывода на экран) в языке C++ используется объект cout и операторы » endl . Приведем примеры использования обоих способов для вывода значений переменных в отдельных строках:
cout cout можно выводить все стандартные типы данных — целые и действительные числа, символы, строки (как C-строки, так и объекты string ), заботиться о задании типов данных при этом не нужно, компилятор автоматически распознает необходимые типы.
Для использования стандартного ввода-вывода в языке C++ необходимо подключить заголовочный файл iostream :
Задание ширины поля вывода
Есть два способа управления выводом — через вызовы метода объекта cout (например, cout.width(20) ) или при помощи «манипуляторов» ( cout ).
Второй способ удобней, поэтому рассмотрим его. Для использования манипуляторов необходимо подключить заголовочный файл iomanip :
Для задания ширины поля вывода одного значения используется манипулятор setw с одним параметром — шириной поля вывода. Например:
cout setw влияет только на значение ширины поля вывода для следующего выводимого значения, если нужно задать значение ширины поля вывода для двух чисел, то это нужно делать перед выводом каждого значения.
Манипулятор setfill с одним параметром типа char позволяет задать символ-«заполнитель», который будет использоваться вместо пробела для заполнения поля. Например, вывести время в формате HH:MM (ровно по две цифры для вывода часов и минут) можно следующим образом:
cout setfill действует постоянно (до следующего вызова setfill ), не нужно устанавливать его перед выводом каждого значения.
Также как и в языке C можно задавать тип выравнивания внутри поля. Выравнивание бывает левым, правым и внутренним. Внутреннее выравнивание означает, что сначала выводится знак числа (если число отрицательное), затем — пробелы, затем — цифры числа. Для задания выравнивания используются манипуляторы left , right , internal .
Примеры использования различных типов выравнивания:
Пример кода | Вывод программы |
Замечание: При использовании специальных символов, перечисленных в табл. 3.1, вам следует располагать их внутри одинарных кавычек, если вы используете данные символы сами по себе, например ‘\n’, или внутри двойных кавычек, если вы используете их внутри строки, например «Привem\nMup!».
Следующая программа SPECIAL.CPP использует специальные символы сигнала (\а) и табуляции (\t) для выдачи звука на встроенный динамик компьютера и затем выводит слова Звонок Звонок Звонок, разделенные табуляцией:
ВЫВОД ВОСЬМЕРИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЗНАЧЕНИЙ
Программы, представленные в этом уроке до сих пор, выводили числа в десятичном виде. В зависимости от назначения ваших программ вам, возможно, потребуется выводить числа в восьмеричном или шестнадцатеричном виде. Для этого можно разместить модификаторы dec, oct и hex внутри выходного потока. Следующая программа ОСТНЕХ.СРР использует эти модификаторы для вывода значений в десятичном, восьмеричном и шестнадцатеричном виде:
Когда вы откомпилируете и запустите эту программу, на экране появится следующий результат:
Восьмеричный: 12 24
Шестнадцатеричный: а 14
Примечание: Когда вы используете один из модификаторов для выбора восьмеричного, шестнадцатеричного или десятичного вывода, ваш выбор будет оставаться в силе до тех пор, пока программа не закончится или пока вы не используете другой модификатор.
ВЫВОД НА СТАНДАРТНОЕ УСТРОЙСТВО ОШИБОК
Как вы уже знаете, используя cout, вы можете перенаправить вывод программы на устройство или файл с помощью операторов переназначения вывода операционной системы. Однако, если ваши программы сталкиваются с ошибкой, вы, вероятно, не захотите, чтобы сообщение об ошибке было перенаправлено с экрана. Перенаправление сообщений об ошибках в файл может скрыть от пользователя факт появления ошибки.
Если вашей программе нужно вывести сообщение об ошибке, вы должны использовать выходной поток cerr. C++ связывает cerr со стандартным устройством ошибок операционной системы. Следующая программа CERR.CPP использует выходной поток cerr для вывода на экран сообщения «Это сообщение появляется всегда «:
Откомпилируйте и запустите эту программу. Далее попытайтесь перенаправить вывод программы в файл, используя оператор переназначения вывода:
Так как операционная система не позволит вашим программам перенаправить вывод, записываемый на стандартное устройство ошибок, сообщение появится на вашем экране.
УПРАВЛЕНИЕ ШИРИНОЙ ВЫВОДА
Несколько предыдущих программ выводили числа на экран. Чтобы гарантировать правильное отображение этих чисел (с правильной расстановкой пробелов), программы включали пробелы до и после чисел. При выводе на cout или cerr ваши программы могут указать ширину вывода каждого числа, используя модификатор setw (установка ширины). С помощью setw программы указывают минимальное количество символов, занимаемое числом. Например, следующая программа SETW.CPP использует модификатор setw для выбора ширины 3, 4, 5 и 6 для числа 1001. Чтобы использовать модификатор setw, ваша программа должна включать заголовочный файл iomanip.h:
Когда вы откомпилируете и запустите эту программу, на экране появится следующий вывод:
Мое любимое число равно1001
Мое любимое число равно1001
Мое любимое число равно 1001
Мое любимое число равно 1001
Если вы указываете ширину с помощью setw, вы указываете минимальное количество символьных позиций, занимаемых числом. В предыдущей программе модификатор setw(3) указывал минимум три символа. Однако, так как число 1001 потребовало больше трех символов, cout использовал реально требуемое количество, которое в данном случае равнялось четырем. Следует отметить, что при использовании setw для выбора ширины, указанная ширина действительна для вывода только одного числа. Если вам необходимо указать ширину для нескольких чисел, вы должны использовать setw несколько раз.
Замечание: Предыдущая программа использует заголовочный файл IOMANIP.H. Вам, возможно, понадобится сейчас напечатать и исследовать содержимое этого файла. Как и в случае с заголовочным файлом IOSTREAM.H вы найдете данный файл внутри подкаталога INCLUDE, который находится в каталоге с файлами вашего компилятора.
ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ
Из этого урока вы узнали несколько способов использования cout для отображения вывода на экран. Все программы, которые вы создадите в процессе изучения оставшейся части книги, будут использовать cout для отображения вывода. Из урока 4 вы узнаете, как использовать переменные внутри своих программ для хранения значений, которые могут изменяться в процессе выполнения программы. Однако до изучения урока 4 убедитесь, что вы освоили следующие основные концепции:
- Выходной поток cout позволяет вам выводить символы и числа.
- Используя специальные символы внутри выходного потока, ваша программа может указать новую строку, табуляцию и другие специальные возможности.
- Для продвижения курсора в начало следующей строки программы могут создать новую строку, используя символ \n или модификатор endl.
- Модификаторы dec, oct и hex позволяют программам выводить значения в десятичном, восьмеричном и шестнадцатеричном виде.
- Используя выходной поток cerr, программы могут записать сообщения в стандартное устройство ошибок операционной системы.
- С помощью модификатора setw ваши программы могут управлять шириной вывода чисел.
Источник
1.8 – Пробельные символы и базовое форматирование кода
Пробельный символ – это термин, обозначающий символы, которые используются для форматирования. В C++ это в первую очередь относится к пробелам, табуляциям и символам новой строки. Компилятор C++ обычно игнорирует пробелы, за некоторыми незначительными исключениями (при обработке текстовых литералов). По этой причине мы говорим, что C++ – это язык, не зависящий от пробелов.
Следовательно, все следующие выражения делают одно и то же:
Даже последнее выражение, разбитое на две строки, компилируется нормально.
Следующие функции выполняют одно и то же:
Одно исключение, когда компилятор C++ обращает на них внимание, это, когда пробельные символы находятся внутри текста в кавычках, например «Hello world!» .
и каждый из них распечатывается именно так, как вы ожидали.
В тексте, заключенном в кавычки, переносы на новую строку не допускаются:
Фрагменты текста в кавычках, разделенные только пробельными символами (пробелы, табуляции или новые строки), будут объединены:
Другое исключение, когда компилятор C++ обращает внимание на пробелы, – это комментарии с // . Однострочные комментарии продолжаются только до конца строки. Таким образом, если вы сделаете что-то вроде этого, у вас возникнут проблемы:
Базовое форматирование
В отличие от некоторых других языков, C++ не накладывает на форматирование для программиста никаких ограничений (помните, доверяйте программисту!). На протяжении многих лет было разработано множество различных методов форматирования программ на C++, и вы обнаружите разногласия по поводу того, какие из них лучше. Наше основное эмпирическое правило состоит в том, что лучшие стили – это те, которые создают наиболее читаемый код и обеспечивают наибольшую последовательность.
Ниже приведены наши рекомендации по базовому форматированию:
1) Для отступов можно использовать табуляцию или пробелы (в большинстве IDE есть параметр, позволяющий преобразовать нажатие табуляции в соответствующее количество пробелов). Разработчики, которые предпочитают пробелы, как правило, делают это, потому что пробелы делают форматирование самоописывающим – код, разделенный пробелами, всегда будет выглядеть правильно, независимо от редактора. Сторонники использования табуляций задаются вопросом, почему бы вам для отступов не использовать символ, предназначенный для создания отступов, тем более что вы можете установить ширину по своему усмотрению. Здесь нет правильного ответа – и спорить об этом всё равно, что спорить, что лучше – торт или пирог. В конечном итоге всё сводится к личным предпочтениям.
В любом случае мы рекомендуем вам установить для табуляций значение отступа в 4 пробела. Некоторые IDE по умолчанию используют отступ в 3 пробела, что тоже нормально.
2) Есть два приемлемых стиля для фигурных скобок.
Руководство по стилю Google C++ рекомендует ставить открывающую фигурную скобку в той же строке, что и выражение:
Обоснованием этого является то, что это уменьшает количество вертикальных пробельных символов (вы не посвящаете всю строку ничему, кроме открывающей фигурной скобки), поэтому вы можете разместить больше кода на экране. Больше кода на экране упрощает понимание программы.
Однако мы предпочитаем распространенный вариант, когда открывающая фигурная скобка располагается в отдельной строке:
Это улучшает читаемость и снижает вероятность ошибок, поскольку пары скобок всегда должны иметь один и тот же отступ. Если вы получаете ошибку компилятора из-за несоответствия скобок, очень легко увидеть, где именно допущена ошибка.
3) Каждое выражение в фигурных скобках должно начинаться на одну табуляцию дальше от открывающей фигурной скобки функции, которой оно принадлежит. Например:
4) Строки не должны быть слишком длинными. Как правило, максимальная длина строки составляет 80 символов. Если строка будет длиннее, ее следует разделить (в разумном месте) на несколько строк. Это можно сделать, добавив к каждой последующей строке дополнительную табуляцию, или, если строки похожи, выровняв ее по строке выше (в зависимости от того, что легче читается).
Это облегчает чтение ваших строк. На современных широкоэкранных мониторах он также позволяет разместить два окна с похожим кодом рядом, что упрощает их сравнение.
Лучшая практика
Длина ваших строк не должна превышать 80 символов.
5) Если длинная строка разделена оператором (например, или + ), оператор должен быть помещен в начало следующей строки, а не в конец текущей строки.
Это помогает прояснить, что последующие строки являются продолжением предыдущих строк, и позволяет выровнять операторы слева, что упрощает чтение.
6) Используйте пробельные символы, чтобы облегчить чтение кода, выравнивая значения и комментарии и добавляя интервалы между блоками кода.
Следующий код читать сложнее:
А этот код читать легче:
Мы будем следовать этим соглашениям на протяжении всех уроков, и они станут вашей второй натурой. По мере того, как мы представляем вам новые темы, мы будем предлагать новые рекомендации по стилю оформления для этого нового функционала.
В конечном итоге C++ дает вам возможность выбрать тот стиль, который вам больше всего подходит, или который вы считаете лучшим. Однако мы настоятельно рекомендуем вам использовать тот же стиль, который используем мы в наших примерах. Он был протестирован тысячами программистов над миллиардами строк кода и оптимизирован для достижения успеха. Одно исключение: если вы работаете с чужим кодом, перенимайте его стили. Лучше отдать предпочтение последовательности, чем вашим предпочтениям.
Автоматическое форматирование
Большинство современных IDE помогут вам отформатировать код по мере его ввода (например, когда вы создаете функцию, IDE автоматически делает отступы для выражений внутри тела функции).
Однако когда вы добавляете или удаляете код, или изменяете форматирование IDE по умолчанию, или вставляете блок кода с другим форматированием, форматирование может испортиться. Исправление форматирования для фрагмента или всего файла может вызывать головную боль. К счастью, современные IDE обычно содержат функцию автоматического форматирования, которая переформатирует либо выделенный фрагмент (выделенный мышью), либо весь файл.
Для пользователей Visual Studio
В Visual Studio параметры автоматического форматирования можно найти в меню Правка (Edit) → Дополнительно (Advanced) → Форматировать документ (Format Document) и Правка (Edit) → Дополнительно (Advanced) → Форматировать выделенный фрагмент (Format Selection).
Для пользователей Code::Blocks
В Code::Blocks параметры автоматического форматирования можно найти в меню клик правой кнопкой мыши в любом месте редактора → Format use AStyle (Форматировать с использованием AStyle).
Для облегчения доступа к этим функциям мы рекомендуем добавить сочетание клавиш для автоматического форматирования активного файла.
Лучшая практика
Для сохранения единообразия стиля форматирования кода настоятельно рекомендуется использовать функцию автоматического форматирования.
Источник