Меню сайта

Урок 6. Чтение ввода с клавиатуры (cin) в C++


ПЕРВОЕ ЗНАКОМСТВО С cin

Точно так же как выходной поток —cout —позволяет вашим программам записать вывод на экран, входной поток —cin —позволяет программам читать ввод с клавиатуры. Когда программы используют —cin —для чтения ввода с клавиатуры, они должны указать переменную, в которуюcin —поместит данные. Следующая программа FIRSTCIN.CPP использует —cin —для чтения числа, введенного с клавиатуры. Программа присваивает введенное число переменной с именемnumber, —а затем выводит значение переменной, используя выходной поток —cout:

#include &lt-iostream.h&gt-

void main(void)

{ —
— — -int number- —II —Число, читаемое с клавиатуры —
— — -cout —&lt-&lt- —«Введите ваше любимое число и нажмите Enter: «- —
— — -cin &gt-&gt- number- —
— — -cout &lt-&lt- «Ваше любимое число равно » &lt-&lt- number &lt-&lt- endl- —
}

Когда вы откомпилируете и запустите эту программу, на вашем экране появится сообщение, предлагающее вам ввести ваше любимое число. Если вы введете число и нажмете —ENTER,программа присвоит ввод переменной —number. —Затем, используя —cout, —программа выведет сообщение, отображающее ваше любимое число.

Следующая программа TWONBRS.CPP запрашивает у вас два числа. Программа присваивает числа переменным —first —и —second. —Затем программа выводит числа, используя —cout:

#include &lt-iostream.h&gt-

void main(void)

{ —
— — -int first, second- // Числа, введенные с клавиатуры —
— — -cout &lt-&lt- «Введите два числа и нажмите Enter: «- —
— — -cin &gt-&gt- first &gt-&gt- second- —
— — -cout &lt-&lt- «Были введены числа » &lt-&lt- first &lt-&lt- » и » &lt-&lt- second &lt-&lt- endl- —
}

Обратите внимание на использование с —cin —двух операторов извлечения:

cin &gt-&gt- first &gt-&gt- second-

В этом случае —cin —присвоит первое введенное значение переменной —first, —a второе переменной —second. —Если для вашей программы требуется третье значение, вы можете использовать третий оператор извлечения, как показано —ниже:


cin &gt-&gt- first &gt-&gt- second &gt-&gt- third-

Если вы применяете —cin —для чтения чисел с клавиатуры, —cin —использует левый —пустой символ(пробел, табуляцию, возврат каретки), чтобы определить, где начинается одно значение, а где второе. Экспериментируйте с программой TWONBRS, разделяя числа табуляцией, пробелом и возвратом каретки.

Чтение ввода с клавиатуры с помощью cin


Для чтения ввода с клавиатуры программы могут использовать входной поток cin. При использовании cin вы должны указать переменную, в которую cin помещает данные. Затем используйте оператор извлечения —
(&gt-&gt-) для направления данных, как показано ниже:

cin &gt-&gt- some_variable-

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

Следите за ошибками переполнения

Если ваши программы выполняют ввод с использованием —cin, —остерегайтесь возможных ошибок, возникающих при вводе пользователем неверного числа. Например, запустите программу FIRSTCIN, которую вы только что создали. Когда программа запросит вас ввести ваше любимое число, введите число 1000000 и нажмите —ENTER. —При этом программа не сможет отобразить число 1000000 в качестве введенного значения. Вместо этого возникнет ошибка переполнения, так как 1000000 превышает наибольшее значение, которое может хранить тип —int.

Если вы внимательно рассмотрите программу FIRSTCIN. CPP, то обратите внимание, что —cinприсваивает введенное число переменной типа —int. —Как вы узнали из урока 4, переменные типа —int —могут хранить значения только в диапазоне от -32768 до 32767. Поскольку переменная типа —int не —может вместить значение 1000000, возникает ошибка. Запустите программу еще несколько раз, вводя отрицательные и положительные числа. Обратите внимание на ошибки, которые возникают, если вы выходите за допустимые пределы значений для той переменной, в которую —cin —помещает ввод.

Следите за ошибками несовпадения типов

Как уже обсуждалось, программа FIRSTCIN.CPP предполагает, что пользователь вводит значение в диапазоне от -32768 до 32767. Если вместо ввода числа вне этого диапазона, пользователь вводит буквы или другие символы, то возникает другая ошибка — —ошибка несовпадения типов. —Другими словами, программа ожидала значение одного типа —(int), —а пользователь ввел значение другого типа —(char). —Для примера запустите программу второй раз. Когда программа запросит число, введите буквы АВС. Как и раньше, возникнет ошибка, поскольку программа ожидает целое число, а не буквы.

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


Чтение символьных данных

Обе предыдущие программы использовали —cin —для чтения целых чисел в переменные типаint. —Следующая программа CIN_CHAR.CPP использует входной поток —cin —для чтения символов с клавиатуры. Как видите, программа читает символ в переменную типа —char.

#include &lt-iostream.h&gt-

void main(void)

{ —
— — -char letter- —
— — -cout &lt-&lt- «Введите любой символ и нажмите Enter: «- —
— — -cin &gt-&gt- l
etter- —
— — -cout &lt-&lt- «Был введен символ » &lt-&lt- letter &lt-&lt- endl- —
}

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


Чтение слов с клавиатуры

Во второй части данной книги вы научитесь сохранять слова или даже строки текста в одной переменной. Там же вы узнаете, как использовать входной поток —cin —для чтения слов и целых строк. А сейчас можете создать свою собственную простую программу, которая читает значения типа —float —или —long. —Например, следующая программа CIN_LONG.CPP используетcin —для чтения значения типа —long:

#include &lt-iostream.h&gt-

void main(void)

{ —
— — -long value- —
— — -cout &lt-&lt- «Введите большое число и нажмите Enter: «- —
— — -cin &gt-&gt- value- —
— — -cout &lt-&lt- «Было введено число » &lt-&lt- value &lt-&lt- endl- —
}

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

Перенаправление В/В и входной поток cin

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

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

В этом уроке вы научились использовать входной поток —cin для —выполнения ввода с клавиатуры. Как вы уже знаете, если ваши программы используют —cin для —чтения ввода с клавиатуры, вам следует указать переменные, которым —cin —присваивает вводимые значения. В уроке 7 вы научитесь использовать оператор C++ —if, —чтобы позволить программам принимать собственные решения. Однако перед тем, как приступить к уроку 7, убедитесь, что вы освоили следующие основные концепции:

    1. C++ предоставляет входной поток —cin, —который ваши программы могут использовать для чтения ввода с клавиатуры.
    2. Если программы для чтения ввода используют —cin, —они должны указать одну или несколько переменных, в которые —cin —будет помещать данные.
    3. Чтобы направить ввод в переменную, вам следует использовать —cin с —оператором извлечения (&gt-&gt-).
    4. При применении —cin для —чтения нескольких значений, —cin —использует пустые символы (пробел, табуляция или возврат каретки), чтобы определить, где заканчивается одно значение и начинается другое.
    5. Если пользователь вводит неверные данные, могут возникать ошибки переполнения или несоответствия типов, а значения, присвоенные входным потоком —cin —переменным вашей программы, будут неверны.

Категория: Обучение C++ | Дата: 26.03.13

Меню раздела
Блок