Что такое cout в C++?
Для отображения данных в консоли используется оператор cout , который служит для вывода простого текста, а также значений переменных в консоль.
cout
Таким образом текст вместе со значением переменной будут выведены в консоль.
Для перевода на новую строку используйте оператор endl, который выглядит следующим образом:
cout
Комментарии (1)
123 06 октября 2022 в 20:42
Не работает - 10 19 C:\Users\user\Downloads\test.c [Error] 'endl' undeclared (first use in this function)
1.5 – Знакомство с iostream: cout, cin и endl
В этом уроке мы подробнее поговорим о std::cout , который мы использовали в нашей программе «Hello world!» для вывода в консоль текста «Hello world!». А также узнаем, как получить данные от пользователя, которые мы будем использовать, чтобы сделать наши программы более интерактивными.
Библиотека ввода/вывода
Библиотека ввода/вывода (библиотека io) является частью стандартной библиотеки C++, которая имеет дело с базовым вводом и выводом. Мы будем использовать функции этой библиотеки для получения ввода с клавиатуры и вывода данных в консоль. Буквы io в iostream означают «input/output» (ввод/вывод).
Чтобы использовать функции, определенные в библиотеке iostream , нам нужно включить заголовочный файл iostream в начало любого исходного файла, который использует содержимое, определенное в iostream , например:
#include // остальной код использует функциональность iostream
std::cout
Библиотека iostream содержит несколько предопределенных переменных, которые мы можем использовать. Одной из наиболее полезных является std::cout , которая позволяет нам отправлять данные в консоль для печати в виде текста. cout означает «character output» (вывод символов).
Вспомним нашу программу Hello world :
#include // для std::cout int main() < std::cout
В эту программу мы включили iostream , чтобы у нас был доступ к std::cout . Внутри нашей функции main() мы используем std::cout вместе с оператором вставки ( для отправки текста « Hello world! » в консоль для печати.
std::cout может печатать не только текст, но и числа:
#include // для std::cout int main() < std::cout
Это дает результат:
Его также можно использовать для вывода значений переменных:
#include // для std::cout int main() < int x; // определяем целочисленную переменную x, инициализированную значением 5 std::cout
Это дает результат:
Чтобы напечатать несколько элементов в одной строке, для объединения (связывания) нескольких частей выводимых данных, оператор вставки (
#include // для std::cout int main()
Эта программа печатает:
Hello world!
Вот еще один пример, в котором мы печатаем и текст, и значение переменной в одном выражении:
#include // для std::cout int main() < int x; std::cout
Эта программа печатает:
x is equal to: 5
std::endl
Как вы думаете, что напечатает следующая программа?
#include // для std::cout int main()
Результат может вас удивить:
Hi!My name is Alex.
Отдельные выражения вывода не приводят к отдельным выводимым строкам в консоли.
Если мы хотим выводить в консоль отдельные выводимые строки, нам нужно указать консоли, когда необходимо переместить курсор на следующую строку.
Один из способов сделать это – использовать std::endl . При выводе с помощью std::cout , std::endl выводит в консоль символ новой строки (заставляя курсор переместиться в начало следующей строки). В этом контексте endl означает «end line» (конец строки).
#include // для std::cout и std::endl int main() < std::coutHi! My name is Alex.
Совет
В приведенной выше программе второй std::endl технически не нужен, так как программа сразу же после этого завершается. Однако он служит двум полезным целям: во-первых, он помогает указать, что строка вывода является «законченной мыслью». Во-вторых, если мы позже захотим добавить дополнительные выражения вывода, нам не нужно будет изменять существующий код. Мы можем просто добавить новые выражения.
std::endl против '\n'
Использование std::endl может быть немного неэффективным, поскольку фактически выполняет две задачи: перемещает курсор на следующую строку и «очищает» вывод (обеспечивает немедленное отображение на экране). При записи текста в консоль с использованием std::cout , std::cout обычно всё равно очищает вывод (а если нет, это обычно не имеет значения), поэтому наличие очистки от std::endl редко бывает важным.
Из-за этого обычно предпочтительнее использовать символ '\n' . Символ '\n' перемещает курсор на следующую строку, но не выполняет избыточную очистку, поэтому он работает лучше. Символ '\n' также легче читать, поскольку он короче и может быть встроен в существующий текст.
Вот пример, в котором '\n' используется двумя разными способами:
#include // для std::cout int main() < int x; // Использование '\n' в одиночном режиме std::coutЭтот код напечатает:
x is equal to: 5 And that's all, folks!
Обратите внимание, что когда '\n' используется сам по себе для перемещения курсора на следующую строку, необходимы одинарные кавычки. При встраивании в текст, который уже заключен в двойные кавычки, одинарные кавычки не нужны.
Мы рассмотрим, что такое '\n' более подробно, когда перейдем к уроку о символах (4.11 – Символы).
Лучшая практика
При выводе текста в консоль лучше использовать '\n' вместо std::endl .
Предупреждение
'\n' использует обратный слеш (как и все специальные символы в C++), а не прямой слеш. Использование прямого слеша (например, '/n' ) может привести к неожиданному поведению.
std::cin
std::cin – еще одна предопределенная переменная, определенная в библиотеке iostream . В то время как std::cout выводит данные в консоль с помощью оператора вставки ( оператора извлечения ( >> ). Для дальнейшего использования входные данные должны быть сохранены в переменной.
#include // для std::cout и std::cin int main() < // запрашиваем у пользователя число std::cout ; // получаем число с клавиатуры и сохраняем его в переменной x std::cin >> x; std::coutПопробуйте скомпилировать эту программу и запустить ее самостоятельно. Когда вы запустите программу, строка 6 напечатает «Enter a number: ». Когда код дойдет до строки 10, ваша программа будет ждать, пока вы введете данные. После того, как вы введете число (и нажмете клавишу Enter ), введенное вами число будет присвоено переменной x . Наконец, в строке 11 программа напечатает «You entered », а затем число, которое вы только что ввели.
Например (я ввел 4):
Enter a number: 4 You entered 4
Это простой способ получить от пользователя ввод с клавиатуры, и в будущем мы будем использовать его во многих наших примерах. Обратите внимание, что вам не нужно использовать '\n' при принятии входных данных, так как пользователю нужно будет нажать клавишу Enter , чтобы его входные данне были принят, а это переместит курсор на следующую строку.
Если ваш экран закрывается сразу после ввода числа, обратитесь к уроку «0.8 – Несколько основных проблем C++» для решения этой проблем.
Лучшая практика
Существуют споры о том, нужно ли инициализировать переменную непосредственно перед тем, как передать ей значение, предоставленное пользователем, через другой источник (например, std::cin ), поскольку значение, предоставленное пользователем, просто перезапишет значение инициализации. В соответствии с нашей предыдущей рекомендацией о том, что переменные всегда следует инициализировать, лучше всего сначала инициализировать переменную.
Мы обсудим, как std::cin обрабатывает недопустимые входные данные в следующем уроке (7.16 – std::cin и обработка недопустимых входных данных).
Для продвинутых читателей
Библиотека ввода/вывода C++ не позволяет принимать ввод с клавиатуры без нажатия пользователем клавиши Enter . Но если вам это нужно, то вам придется использовать стороннюю библиотеку. Для консольных приложений мы рекомендуем библиотеку pdcurses. Многие графические пользовательские библиотеки имеют для этого свои собственные функции.
Резюме
Программисты-новички часто путают std::cin , std::cout , оператор вставки ( > ). Вот простой способ запомнить:
- std::cin и std::cout всегда идут в левой части выражения;
- std::cout используется для вывода значения (cout = character output);
- std::cin используется для получения входного значения (cin = character input);
- >> используется с std::cin и показывает направление движения данных (если std::cin представляет клавиатуру, входные данные перемещаются с клавиатуры в переменную). std::cin >> x перемещает значение, введенное пользователем с клавиатуры, в x .
Подробнее об операторах мы поговорим в уроке «1.9 – Знакомство с литералами и операторами».
Небольшой тест
Вопрос 1
Рассмотрим следующую программу, которую мы использовали выше:
#include // для std::cout и std::cin int main() < // запрашиваем у пользователя число std::cout ; // получаем число с клавиатуры и сохраняем его в переменной x std::cin >> x; std::cout
Программа ожидает, что вы введете целочисленное значение, поскольку переменная x , в которую будет помещен пользовательские входные данные, является целочисленной переменной.
Запустите эту программу несколько раз и опишите, что произойдет, если вместо этого вы введете следующие типы входных данных:
а) Буква, например, h .
б) Число с дробной частью. Попробуйте числа с дробными составляющими меньше 0,5 и больше 0,5 (например, 3,2 и 3,7).
Дробная составляющая опущена.
в) Небольшое отрицательное целое число, например -3.
Всё прекрасно работает.
г) Слово, например «Hello».
д) Действительно большое число (минимум 3 миллиарда).
Вы получаете, казалось бы, случайное число.
Последнее предложение может быть особенно неожиданным. Попробуйте! Это происходит потому, что x может содержать числа только до определенного размера. После этого он «переполняется». Мы обсудим переполнение в следующем уроке.
Теги
Сохранить или поделиться
На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.
В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.
Присоединяйтесь к нам во ВКонтакте!
- Антенны и распространение радиоволн
- Беспроводная связь
- Высокочастотная техника
- Волоконно-оптические линии связи (ВОЛС)
- Измерительная техника
- Исполнительные механизмы и драйверы
- САПР
- Спутниковая связь
- Схемотехника
- Телевидение
- Цифровая электроника
- Технологии и инструменты
- Электронные компоненты
- А что внутри?
- Прочее (радиоэлектроника)
- Алгоритмы и структуры данных
- Базы данных
- Веб-разработка
- Мультимедиа (разработка ПО)
- Нейронные сети
- Паттерны проектирования
- Связь
- Системы сборки ПО
- Языки программирования
- Компьютерные сети
- Операционные системы
- Верстка
- Системы контроля версий
- История технологий
- Мультимедиа
- Новости телекома
- Нормативная документация
- Охрана труда
- Полезные программы
- Просто интересно
- Экономика телекоммуникаций и электронной промышленности
- Экономика и инвестиции
Мы в соцсетях
Объект cout в C++
Объект cout в C++ – это объект класса ostream. Он используется для отображения вывода на стандартное устройство вывода, то есть на монитор. Он связан со стандартным потоком вывода C stdout.
Декларация
extern ostream cout;
Он определен в заголовочном файле .
Гарантируется, что объект cout будет инициализирован во время или перед первым построением объекта типа ios_base :: Init. После создания объекта cout он привязывается к cin, что означает, что любая операция ввода в cin выполняет cout.flush().
«C» в cout относится к «символу», а «out» означает «вывод», следовательно, cout означает «вывод символов». Объект cout используется вместе с оператором вставки
coutcoutОператор вставки может использоваться более одного раза с комбинацией переменных, строк и манипуляторов (например, endl):
coutОбъект cout в С++ также можно использовать с другими функциями-членами, такими как put(), write() и т. Д. Некоторые из наиболее часто используемых функций-членов:
- cout.put (char ch): отображает символ, сохраненный в ch.
- cout.write (char * str, int n): отображает первые n символов, прочитанных из str.
- cout.setf (option): Устанавливает данную опцию. Обычно используются следующие варианты: левый, правый, научный, фиксированный и т. Д.
- cout.unsetf (опция): Отменяет данную опцию.
- cout.precision (int n): устанавливает десятичную точность равной n при отображении значений с плавающей запятой. То же, что cout
Пример 1: cout с оператором вставки:
#include using namespace std; int main() < int a,b; char str[] = "Hello Programmers"; /* Single insertion operator */ cout > a >> b; cout << str; cout << endl; /* Multiple insertion operator */ coutКогда вы запустите программу, возможный результат будет:
Enter 2 numbers - 6 17 Hello Programmers Value of a is 6 Value of b is 17
Пример 2: cout с функцией-членом:
#include using namespace std; int main()
Когда вы запустите программу, возможный результат будет:
Вывод в языке C++ через cout
Для стандартного вывода (вывода на экран) в языке C++ используется объект cout и операторы "
Для вывода значений переменных a и b через пробел так:
В этом примере мы даем команду сначала вывести значение переменной a, затем строку из одного пробела, затем вывести значение переменной b.
Для перехода на следующую строку нужно либо вывести специальный символ '\n', либо использовать объект endl . Приведем примеры использования обоих способов для вывода значений переменных в отдельных строках:
Через cout можно выводить все стандартные типы данных - целые и действительные числа, символы, строки (как C-строки, так и объекты string ), заботиться о задании типов данных при этом не нужно, компилятор автоматически распознает необходимые типы.
Для использования стандартного ввода-вывода в языке C++ необходимо подключить заголовочный файл iostream :
Задание ширины поля вывода
Есть два способа управления выводом - через вызовы метода объекта cout (например, cout.width(20) ) или при помощи "манипуляторов" ( cout
Второй способ удобней, поэтому рассмотрим его. Для использования манипуляторов необходимо подключить заголовочный файл iomanip :
Для задания ширины поля вывода одного значения используется манипулятор setw с одним параметром - шириной поля вывода. Например:
выведет значение переменной a в поле шириной 10 символов. Аналогично правилам вывода в языке C, по умолчанию осуществляется выравнивание выводимого значения по правому краю (перед выводимым значением добавляются пробелы), если же число содержит больше символов, чем ширина поля, то будут выведены все символы.
Манипулятор setw влияет только на значение ширины поля вывода для следующего выводимого значения, если нужно задать значение ширины поля вывода для двух чисел, то это нужно делать перед выводом каждого значения.
Манипулятор setfill с одним параметром типа char позволяет задать символ-"заполнитель", который будет использоваться вместо пробела для заполнения поля. Например, вывести время в формате HH:MM (ровно по две цифры для вывода часов и минут) можно следующим образом:
Заметим, что манипулятор setfill действует постоянно (до следующего вызова setfill ), не нужно устанавливать его перед выводом каждого значения.
Также как и в языке C можно задавать тип выравнивания внутри поля. Выравнивание бывает левым, правым и внутренним. Внутреннее выравнивание означает, что сначала выводится знак числа (если число отрицательное), затем - пробелы, затем - цифры числа. Для задания выравнивания используются манипуляторы left , right , internal .
Примеры использования различных типов выравнивания: