Программирование >>  Дополнительные возможности наследования 

1 ... 162 163 164 [ 165 ] 166 167 168 ... 265


Aucmuuz 16.3. Пвод строки зиачсииО

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

Листинг 16.3. Ввод строки значений с помощью cin

Sinclude <iostream.h>

int main() {

int mylnt;

long myLong;

double myDouble;

float myFloat;

unsigned int myUnsigned;

char myWord[50];

cout int: ; cin mylnt; cout << Long: ; cm >> myLong; cout Double: ; cin myDouble; cout Float: ; cin >> myFloat; cout Word: ; cin >> myWord; cout Unsigned: ; cin >> myUnsigned;

cout \ n\ nlnt:\ t << mylnt endl; cout Long:\ t myLong << endl; cout << Double:\ t << myDouble endl; cout << Float:\ t myFloat endl; cout Word: \ t myWord endl; cout Unsigned:\ t << myUnsigned endl;

cout << \ n\ nint, Long, Double, Float, Word, Unsigned:

cin mylnt >> myLong myDouble;

cin myFloat myWord myUnsigned;

cout \ n\ nlnt:\ t << mylnt << endl;

cout << Long:\ t myLong << endl;

cout Double:\ t myDouble << endl;

cout Float:\ t myFloat << endl;

cout Word: \ t myWord endl;

cout << Unsigned:\ t << myUnsigned << endl;

return 0;



. Int: 2

Long: 30303

Double: 393939397834 Float: 3.33 Word: Hello Unsigned: 85

Int: 2 Long: 30303 Double: 3.93939e+11 Float: 3.33 Word: Hello Unsigned: 85

Int, Long, Double, Float, Word, Unsigned: 3 304938 393847473 6.66 bye -2

Int: 3 Long: 304938 Double: 3.93847e+08 Float: 6.66 Word: bye Unsigned: 4294967294

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

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

Обратите внимание на строку 42, в которой выводится беззнаковое целое число. Пользователь ввел значение -2. Поскольку профамма была проинструктирована, что вводится беззнаковое целое число, то вместо знакового -2 будет введено беззнаковое двоичное представление этого числа. Поэтому при выводе с помощью cout на экране отображается значение 4294967294, являющееся двоичным представлением числа -2.

Позже вы узнаете, как вводить в буфер строки, содержащие несколько слов, разделенных пробелами. Сейчас же рассмотрим подробнее использование cin для ввода данных сразу в несколько переменных, как в строках 35-36.

Оператор возвращает ссылку на оОъвкт istraam

Оператор возвращает ссылку на объект istream. Но поскольку cin сам является объектом istream, результат выполнения одной операции ввода может быть началом следующей операции ввода, как показано ниже:

Int VarOne, varTwo, varThree; cout << Enter three numbers: cin >> VarOne >> varTwo >> varThree;



в строке cin VarOne varTwo varThree; сначала выполняется первый ввод cin VarOne, в результате чего возвращается объект istream, позволяющий выполнить присвоение второго значения переменной varTwo. Это равносильно следующей записи:

((cin VarOne) varTwo) varThree;

Аналогичный подход используется с объектом cout, но речь об этом пойдет дальще.

Другие метоуы объекта cin

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

Ввод одного символа

Вариант operate г , принимающий ссылку на символ, может использоваться для считывания одного символа со стандартного устройства ввода. Для этого используется функция-член get(). При этом можно применять get() без параметров или использовать вариант этой же функции, принимающей в качестве параметра ссылку на символ.

Использование функции get( без параметров

Сначала рассмотрим использование функции get() без параметров. В этом случае функция возвращает значение найденного символа или EOF (end of file - конец файла) при достижении конца файла. Функция get () без параметров используется редко. Так, cin.getO нельзя использовать для последовательной инициализации ряда переменных, поскольку возвращаемое функцией значение не является объектом iostream. Именно поэтому следующая запись работать не будет:

Cin.getO myVarOne myVarTwo ошибка

Запись cin.getO myVarOne возвращает значение типа int, а не объект iostream. Пример использования функции get() без параметров показан в листинге 16.4.

Аисшппг 16.4. Нсиокьзование фупкцпи get() Оез параметров

Листинг 16.4. Использование get() без параметров Sinclude <iostream.h>

int mainO {

char oh;

while ( (ch = cin.getO) != EOF) {

cout << ch: << ch endl;

cout << \ nDone!\ n ; return 0;



1 ... 162 163 164 [ 165 ] 166 167 168 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика