Что такое cout и cin

Поточный ввод-вывод в C++

Поточный ввод-вывод в C++ выполняется с помощью функций сторонних библиотек. В С++, как и в С, нет встроенных в язык средств ввода-вывода.

Библиотека iostream определяет три стандартных потока:

Для их использования в Microsoft Visual Studio необходимо прописать строку:

Для выполнения операций ввода-вывода переопределены две операции поразрядного сдвига:

Возможно многократное назначение потоков:
cout

Ввод информации

При этом из входного потока читается последовательность символов до пробела, затем эта последовательность преобразуется к типу идентификатора, и получаемое значение помещается в идентификатор:

Возможно многократное назначение потоков:
cin >> переменная1 >> переменная2 >>. >> переменнаяn;

При наборе данных на клавиатуре значения для такого оператора должны быть разделены символами (пробел, \n, \t ).

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

Результат выполнения
Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Для ввода текста до символа перевода строки используется манипулятор потока getline() :

Результат выполнения
Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Манипуляторы потока

В С++ имеется ряд манипуляторов. Рассмотрим основные:

МанипуляторОписание
endlПомещение в выходной поток символа конца строки ‘\n’
decУстановка основания 10-ой системы счисления
octУстановка основания 8-ой системы счисления
hexУстановка основания 16-ой системы счисления
setbaseВывод базовой системы счисления
width(ширина)Устанавливает ширину поля вывода
fill(‘символ’)Заполняет пустые знакоместа значением символа
precision(точность)Устанавливает количество значащих цифр в числе (или после запятой) в зависимости от использования fixed
fixedПоказывает, что установленная точность относится к количеству знаков после запятой
showposПоказывает знак + для положительных чисел
scientificВыводит число в экспоненциальной форме
get()Ожидает ввода символа
getline(указатель, количество)Ожидает ввода строки символов. Максимальное количество символов ограничено полем количество

Пример Программа ввода-вывода значения переменной в C++

Та же программа, написанная на языке Си

Пример Использование форматированного вывода

Результат выполнения
Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Еще один пример использования форматированного вывода: для t∈[0;3] с шагом 0,5 вычислить значение y=cos(t).

Результат выполнения
Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Источник

Дополнительные возможности cin и cout в C++

ЧТО ВНУТРИ iostream.h

Каждая написанная вами на C++ программа включала заголовочный файл iostream.h. Этот файл содержит определения, позволяющие вашим программам использовать cout для выполнения вывода и cin для выполнения ввода. Более точно, этот файл определяет классы istream и ostream (входной поток и выходной поток), a cin и соut являются переменными (объектами) этих классов. Выберите время, чтобы напечатать файл iostream.h. Он находится в подкаталоге INCLUDE. Определения в этом файле достаточно сложны. Однако если вы пройдете по файлу медленно, то обнаружите, что большинство определений являются просто определениями классов и констант. Внутри файла вы найдете объявления переменных cin и cout.

ИСПОЛЬЗОВАНИЕ cout

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

<
int i;
for (i = 3; i С:> COUTWIDT

Мое любимое число1001

Мое любимое число 1001

Мое любимое число 1001

Мое любимое число 1001

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

Использование символа-заполнителя

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

Таблица информации
Профиль компании. 10
Доходы и убытки компании. 11
Члены правления компании. 13

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

<
float value = 1.23456;
int i;
for (i = 1; i С:>SETPREC

Если вы используете манипулятор setprecision для изменения точности, ваша установка действует до тех пор, пока программа повторно не использует setprecision.

ВЫВОД И ВВОД ОДНОГО СИМВОЛА ЗА ОДИН РАЗ

В зависимости от назначения вашей программы вам, возможно, потребуется выводить символы на дисплей или читать с клавиатуры по одному символу за один раз. Для вывода одного символа за один раз ваши программы могут использовать функцию cout.put. Следующая программа COUTPUT.CPP использует эту функцию для вывода на экран сообщения Учимся программировать на языке C++! по одному символу за раз:

<
char string[] = «Учимся программировать на языке C++!»;
int i;
for (i = 0; string[i]; i++) cout.put(string[i]) ;
>

Библиотека этапа выполнения предоставляет функцию с именем toupper, которая возвращает заглавный эквивалент строчной буквы. Следующая программа COUTUPPR.CPP использует функцию toupper для преобразования символа в верхний регистр, а затем выводит эту букву с помощью cout.put.

#include // прототип toupper

<
char string[] = «C++ language»;
int i;
for (i = 0; string[i]; i++) cout.put(toupper(string[i]));
cout С:> COUTUPPR

Результирующая строка: C++ language

* К сожалению, функция toupper применима только к английским буквам. Прим. перев.

ЧТЕНИЕ ВВОДА С КЛАВИАТУРЫ ПО ОДНОМУ СИМВОЛУ ЗА РАЗ

Точно так же, как cout предоставляет функцию cout.put для вывода символа, cin предоставляет функцию cin.get, которая позволяет вам читать один символ данных. Чтобы воспользоваться функцией cin.get, вы просто присваиваете переменной возвращаемый этой функцией символ, как показано ниже:

Следующая программа CIN_GET.CPP выводит сообщение, в ответ на которое вам необходимо ввести Y или N. Затем она повторяет в цикле вызов cin.get для чтения символов, пока не получит Y или N:

<
char string[128];
cout

<
char string[128];
cout ICQ-консультантыЧто такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin Skype-консультантыОбщая справкаКак оформить заказТарифы доставкиСпособы оплатыПрайс-листКарта сайтаЧто такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

Источник

Изучаем C++.Часть 4. Ввод данных и обработка исключений

Разбираемся, как правильно использовать ввод данных, чтобы ничего не сломалось.

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Это четвёртая часть из серии статей «Глубокое погружение в C++». В прошлый раз мы познакомились с ветвлением и условными конструкциями. Сейчас поговорим о том, как сделать программу более полезной за счёт ввода данных и обработки исключений.

Если программа работает с изначально заданными данными, то она полезна только один раз, потому что результат будет всегда один и тот же. Гораздо эффективнее она становится, когда можно использовать разные данные:

Как получить и обработать данные через консоль? Давайте пробовать.

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Команды ввода и вывода в C++

В самом начале кода каждой программы мы подключаем библиотеку iostream — Input/Output Stream (поток ввода/вывода). Именно в ней находится команда cout, что позволяет выводить данные на экран консоли. В ней же есть команда cin, которая, наоборот, запрашивает пользовательский ввод.

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Давайте напишем простую программу, которая спрашивает имя пользователя.

Сначала мы объявили переменную name строкового типа, а потом сказали пользователю, что именно нужно ввести, и в конце выдали сообщение «Hello, %name%!». Это выглядит так:

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

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

Также вы можете запросить от пользователя данные других типов. Например, числовые:

Получается простейший калькулятор:

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Это работает с символами, числами с плавающей запятой и другими данными.

Проверка консольного ввода в C++

Как мы уже говорили в первой статье, компьютер может только выполнять инструкции. Когда что-то идёт не по плану, он не способен самостоятельно решить, что ему делать, поэтому выдаёт ошибку.

Допустим, нам нужно, чтобы пользователь ввёл свой возраст. Мы ожидаем число вроде 8, 15 или 21, но кто-то может ввести эти числа прописью, например «двадцать один». Для программы эти варианты будут неожиданными, потому что она уже подготовила переменную типа int — строка в неё никак не влезет.

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

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

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Конвертация данных

В C++ самый простой способ конвертировать строку в число — использовать функцию stoi () или аналогичную:

Вот пример корректной и некорректной конвертации:

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Как видно на скриншоте, в первом случае всё прошло успешно, но в следующих случаях программа выдала ошибку. Давайте рассмотрим последнюю:

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Разберём некоторые моменты подробнее:

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

Обработка исключений в C++

Для этого нам пригодится конструкция try-catch.

Что такое cout и cin. Смотреть фото Что такое cout и cin. Смотреть картинку Что такое cout и cin. Картинка про Что такое cout и cin. Фото Что такое cout и cin

Вот код программы, которая проверяет корректность введённых данных:

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

Источник

1.5 – Знакомство с iostream: cout, cin и endl

Библиотека ввода/вывода

Библиотека ввода/вывода (библиотека io) является частью стандартной библиотеки C++, которая имеет дело с базовым вводом и выводом. Мы будем использовать функции этой библиотеки для получения ввода с клавиатуры и вывода данных в консоль. Буквы io в iostream означают «input/output» (ввод/вывод).

std::cout

Вспомним нашу программу Hello world :

std::cout может печатать не только текст, но и числа:

Это дает результат:

Его также можно использовать для вывода значений переменных:

Это дает результат:

Чтобы напечатать несколько элементов в одной строке, для объединения (связывания) нескольких частей выводимых данных, оператор вставки ( ) можно использовать несколько раз в одном выражении. Например:

Эта программа печатает:

Вот еще один пример, в котором мы печатаем и текст, и значение переменной в одном выражении:

Эта программа печатает:

std::endl

Как вы думаете, что напечатает следующая программа?

Результат может вас удивить:

Отдельные выражения вывода не приводят к отдельным выводимым строкам в консоли.

Если мы хотим выводить в консоль отдельные выводимые строки, нам нужно указать консоли, когда необходимо переместить курсор на следующую строку.

Совет

В приведенной выше программе второй std::endl технически не нужен, так как программа сразу же после этого завершается. Однако он служит двум полезным целям: во-первых, он помогает указать, что строка вывода является «законченной мыслью». Во-вторых, если мы позже захотим добавить дополнительные выражения вывода, нам не нужно будет изменять существующий код. Мы можем просто добавить новые выражения.

std::endl против ‘\n’

Вот пример, в котором ‘\n’ используется двумя разными способами:

Этот код напечатает:

Обратите внимание, что когда ‘\n’ используется сам по себе для перемещения курсора на следующую строку, необходимы одинарные кавычки. При встраивании в текст, который уже заключен в двойные кавычки, одинарные кавычки не нужны.

Мы рассмотрим, что такое ‘\n’ более подробно, когда перейдем к уроку о символах (4.11 – Символы).

Лучшая практика

Предупреждение

‘\n’ использует обратный слеш (как и все специальные символы в C++), а не прямой слеш. Использование прямого слеша (например, ‘/n’ ) может привести к неожиданному поведению.

std::cin

Если ваш экран закрывается сразу после ввода числа, обратитесь к уроку «0.8 – Несколько основных проблем C++» для решения этой проблем.

Лучшая практика

Существуют споры о том, нужно ли инициализировать переменную непосредственно перед тем, как передать ей значение, предоставленное пользователем, через другой источник (например, std::cin ), поскольку значение, предоставленное пользователем, просто перезапишет значение инициализации. В соответствии с нашей предыдущей рекомендацией о том, что переменные всегда следует инициализировать, лучше всего сначала инициализировать переменную.

Мы обсудим, как std::cin обрабатывает недопустимые входные данные в следующем уроке (7.16 – std::cin и обработка недопустимых входных данных).

Для продвинутых читателей

Резюме

Подробнее об операторах мы поговорим в уроке «1.9 – Знакомство с литералами и операторами».

Небольшой тест

Вопрос 1

Рассмотрим следующую программу, которую мы использовали выше:

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

б) Число с дробной частью. Попробуйте числа с дробными составляющими меньше 0,5 и больше 0,5 (например, 3,2 и 3,7).

Дробная составляющая опущена.

Всё прекрасно работает.

г) Слово, например «Hello».

д) Действительно большое число (минимум 3 миллиарда).

Вы получаете, казалось бы, случайное число.

Последнее предложение может быть особенно неожиданным. Попробуйте! Это происходит потому, что x может содержать числа только до определенного размера. После этого он «переполняется». Мы обсудим переполнение в следующем уроке.

Источник

Что такое cout и cin

Этот раздел является переводом туториала C++ Language

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

Стандартная библиотека определяет несколько потоков, которые могут быть использованы для доступа к стандартным объектам из окружения во время работы программы:

поток описание
cinстандартный поток ввода
coutстандартный поток вывода
cerrстандартный поток ошибок (вывод)
clogстандартный поток журналирования (вывод)

Мы рассмотрим более подробно только cout и cin (стандартные потоки вывода и ввода). cerr и clog также являются потоками вывода, поэтому они по сути работают как cout, с той лишь разницей, что они идентифицируют потоки для определенных целей: сообщения об ошибках и журналирование; они во многих случаях фактически делают одно и то же: они печатают на экране, хотя они также могут быть индивидуально перенаправлены.

Стандартный вывод (cout)

В большинстве программных сред стандартный поток вывода по умолчанию выводится на экран, объектом C++ для доступа к нему является cout.

Для операций форматированного вывода cout используется вместе с оператором вставки, который записывается как

Для операций форматированного ввода cin используется вместе с операцией извлечения, который записывается как >> (т.е. два знака «больше»). Далее следует переменная, в которой должны хранится извлеченные данные. Например:

В первом выражении объявляется переменная age типа int, а во втором из cin извлекается значение, которое будет в ней храниться. Эта операция приводит к ожиданию ввода из cin. Обычно это означает, что программа будет ожидать, пока пользователь введет некоторую последовательность с клавиатуры. В этом случае стоит отметить, что введенные символы будут переданы программе после нажатия клавиши ENTER (или RETURN). При достижении операции извлечения из cin, программа будет ждать настолько долго, насколько это необходимо, пока не будет произведен ввод.

Операция извлечения из cin использует тип переменной после >> для определения того, как интерпретировать символы из ввода; если это число, ожидаемым форматом ввода будем последовательность цифр, если строка, то последовательность символов и т.д.

Как вы видите, извлечение из cin делает задачу ввода данных из стандартного ввода довольно простой. Но этот метод имеет также большой недостаток. Что произойдет в примере выше, если пользователь введет что-то, что не может быть интерпретировано как целое число? В этом случае операция извлечения завершится неудачно. И это, по умолчанию, позволяет программе продолжить работу, не устанавливая значение переменной i, что приведет к неопределенному результату, если значение i используется позже.

Это плохое поведение программы. Большинство программ должны вести себя так, как ожидается, независимо от того, что вводит пользователь, занимаясь обработкой неправильных значений. Только очень простые программы могут зависеть от значений, введенных из cin, без соответствующей проверки. Немного позже мы увидим, как stringstream можно использовать для контроля за пользовательским вводом.

Извлечением из cin можно запрашивать более одного элемента в одном выражении:

В обоих случаях от пользователя требуется ввод двух значений: одно для переменной a, а другое для переменной b. Для разделения двух последовательных операций ввода используется любой тип разделителей. Это могут быть пробелы, символы табуляции или новой строки.

cin и строки

Оператор извлечения может быть применен к cin для извлечения строк символов так же, как и для фундаментальных типов данных:

Однако извлечение из cin считает разделители (пробелы, символы табуляции и новой строки. ) окончанием извлекаемого значения. Таким образом, извлечение строки означает извлечение одного слова, а не фразы или предложения.

Для получения из cin целой строки имеется функция getline, которая принимает поток (cin) первым аргументом и строковую переменную вторым. Например:

Обратите внимание на то, что в обоих вызовах getline мы используем один и тот же идентификатор (mystr). Во втором случае программа просто замещает предыдущее содержимое новым, которое введено.

Стандартным поведением, которое большинство пользователей ожидают от консольной программы, это запрос ввода от пользователя каждый раз, пользователь заполняет поле и затем нажимает ENTER (RETURN). Поэтому, если у вас нет веской причины не делать этого, вы всегда должны использовать getline для получения ввода в консольных программах вместо извлечения из cin.

stringstream

Стандартный заголовочный файл определяет тип stringstream, который позволяет обрабатывать строку как поток, и это позволяет использовать операции вставки/извлечения в/из строки так же, как если бы она была потоком cin или cout. Эта возможность особенно полезна для преобразования строк в числовые значения и наоборот. Например, чтобы извлечь целое число из строки, мы можем написать:

Здесь объявляется переменная типа string и инициализируется значением «1204», и переменная типа int. Затем в третьей строке эта переменная используется для извлечения из потока, созданного из строки. Эта часть кода сохраняет числовое значение 1204 в переменной myint.

В этом примере мы получаем числовые значения из стандартного ввода косвенно: вместо извлечения числовых значений непосредственно из cin мы получаем строки из него в строковый объект (mystr), затем мы извлекаем значения из этой строки в переменные price и quantity. Так как это числовые значения, с ними можно производить арифметические операции, такие как умножение, для получения итоговой цены.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *