Что означает cin в c

Cin — это объект входного потока пространства имен std: std::cin >> x; В данном коде программы используется оператор cin, операция взятия из потока >> чтобы получить от пользователя введенное им значение. Объект std::cin забирает вводимую пользователем информацию из стандартного потока ввода, который обычно является клавиатура. Функция Cin достаточно интелектуальна, чтобы понять, какая информация введена с клавиатуры. Ведь мы можем ввести целое число, а также можем ввести дробное, сивмольное или текст. Cout — это объект выходного потока пространства имен std. Это необъявленный идентификатор. Его не нужно объявлять. Его нужно только подключать к программе при помощи слова include: #include std::cout #includ e //директива препроцесора

#include //директива препроцесора

int x,y; //объявляем переменный целого типа

std::cout //На экран выводится ‘X = ‘

std::cin>>x; //вводим с клавиатуры число, например: 5

std::cout //На экран выводится ‘Y = ‘

std::cin>>y; //вводим с клавиатуры число, например: 8

заголовочный файл включает объекты cin, cout, которые нам нужны. Если #include убрать, то при компиляции выйдет ошибка. #include необходимо для того, чтобы мы видели результат на экране, благодаря функции _getch(). Если ее не будет, то программа выполнится и закроется. И мы не успеем увидеть результат работы программы. Если откомпилировать код, написанный выше, то результат будет следующий:

Итак, мы видим, что в std::cout выводится ‘x + y = ‘. После этого вычисляется результат суммы и сразу же выводится результат. Мы могли сделать по-другому:

#includ e //директива препроцесора

#include //директива препроцесора

int x,y; //объявляем переменный целого типа

int sum; //Переменная для вычисления суммы

std::cin>>x; //вводим с клавиатуры число, например: 5

std::cin>>y; //вводим с клавиатуры число, например: 8

Читайте также:  Geforce gt 420 2gb

Результат работы программы будет аналогичный. std::endl — это оператор конца строки. Давайте это же сделаем и для дробных чисел:

#includ e //директива препроцесора

#include //директива препроцесора

float x,y; //объявляем переменный дробного типа

float sum; //Переменная дробного типа для вычисления суммы

std::cout //На экран выводится ‘X = ‘

std::cin>>x; //вводим с клавиатуры число, например: 2.25

std::cout //На экран выводится ‘Y = ‘

std::cin>>y; //вводим с клавиатуры число, например: 4.89

sum = x + y; //Вычисление суммы

Результат работы программы:

Итак, мы видим, что функция cin и функция cout интелектуально способные различить дробные и целые числа.

Может кто-нибудь объяснить, что такое оператор cin.peek и что он делает в приведенном выше коде? Как EOF|| cin.peek() == ‘
‘) повлиять на это.

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

Решение

функция ‘peek’ для входных потоков (в вашем случае ‘cin’) извлекает следующий символ из потока, фактически не потребляя его. Это означает, что вы можете «просмотреть» следующий символ на входе, и при следующем вызове любой потребляющей операции (перегруженный оператор >> или cin.read) прочитает этот символ и использует его.

Состояние eof() || cin.peek == ‘
‘ проверяет, достигнут ли конец потока входного файла, или если использование предоставило символ новой строки.

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

Другие решения

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

Читайте также:  3S1265r схема блока питания

Он не может принять число с плавающей запятой, потому что cin >> NumChild будет читать int и остановится, как только он достигнет десятичной точки. Пример: введите «3.14». numChild будет содержать 3. «.14» остается в потоке, поэтому peek будет читать ‘.’ , а не конец файла или символ новой строки, и печатает сообщение об ошибке.

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

В С++, как и в С, нет встроенных в язык средств ввода-вывода.

В С для этих целей используется библиотека stdio.h .
В С++ разработана новая библиотека ввода-вывода iostream , использующая концепцию объектно-ориентированного программирования:

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

  • cin стандартный входной поток ( stdin в С)
  • cout стандартный выходной поток ( stdout в С)
  • cerr стандартный поток вывода сообщений об ошибках ( stderr в С)

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

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

  • >> получить из входного потока
  • cout

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

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

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

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

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

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

Результат выполнения

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

Читайте также:  Мтс узнать на кого зарегистрирован номер телефона

Результат выполнения

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

Функцию — манипулятор потока можно включать в операции помещения в поток и извлечения из потока ( >).

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

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

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

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

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

Результат выполнения

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

Результат выполнения

Оставьте ответ

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