Читаем Освой самостоятельно С++ за 21 день. полностью

<p>Другие методы объекта cin</p></span><span>

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

<p>Ввод одного символа</p></span><span>

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

<p>Использование функции gef без параметров</p></span><span>

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

cin.get >>myVarOne >> myVarTwo // ошибка

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

Листинг 16.4. Использование функции get Вез параметров

1: // Листинг 16.4. Использование get без параметров

2: #include

3:

4: int main

5: {

6:    char ch;

7:    while ( (ch = cin.get) != EOF)

8:    {

9:       cout << "ch: " << ch << endl;

10:   }

11:   cout << "\nDone!\n";

12:   return 0;

13: }

Примечание:Для выхода из этой программы придется ввести символ конца файла с клавиатуры. С этой целью в операционной системе DOS используется комбинация клавиш , а в UNIX — .

Результат:

Hello

ch H

ch e

ch 1

ch 1

ch о

ch 

World

ch W

ch о

ch r

ch 1

ch d

ch 

(ctrl-z)

Done!

Анализ: В строке 6 объявляется локальная символьная переменная. В цикле while символ, полученный от cin.get, присваивается ch, и если возвращенный символ не EOF, то он выводится на печать. Цикл завершается вводом EOF, комбинацией клавиш в DOS или в UNIX.

Следует отметить, что не во всех версиях библиотеки istream поддерживается функция-член get, хотя сейчас она является частью стандарта ANSI/ISO.

<p><a l:href="">Использование функции </a></span><span>get с параметром</p>

При установке в функции get параметра, указывающего на символьную переменную, этой переменной присваивается очередной символ потока ввода. При этом возвращается объект iostream, что позволяет вводить последовательный ряд значений, как показано в листинге 16.5.

Листинг 16.5. Использование функции get с параметрами

1: // Листинг 16.5. Использование get с параметрами

2: #include

3:

4: int main

5: {

6:    char а, b, с;

7:

8:    cout << "Enter three letters: ";

9:

10:   cin.get(a).get(b).get(c);

11:

12:   cout << "а: " << а << "\nb: " << b << "\nc: " << с << endl;

13:   return 0;

14: }

Результат:

Enter three letters: one

а: о

b: n

с: e

Анализ: В строке 6 объявляются символьные переменные а, b и с. В строке 10 трижды последовательно вызывается функция cin.get. Сначала вызывается cin.get(a), в результате первый символ буфера ввода заносится в а и возвращается объект cin, после чего происходит вызов cin.get(b), присваивающий очередной символ буфера переменной b. Аналогичным образом вызывается функция cin.get(c), присваивающая следующий символ переменной с.

Поскольку cin.get возвращает cin, можно было записать это следующим образом:

cin.get(a) >> b;

В этом случае cin.get(a) возвратит cin, поэтому следующее выражение будет иметь вид: cin >> b;.

Рекомендуется:Используйте оператор ввода >>, когда необходимо вводить значения, разделенные пробелами в строке. Используйте функцию get с символьным параметром, если нужно последовательно вводить все символы строки, включая пробелы.

<p>Ввод строк со стандартного устройства ввода</p></span><span>

Для заполнения массива символов можно использовать как оператор ввода (>>), так и методы get и getline.

Перейти на страницу:

Похожие книги

Сущность технологии СОМ. Библиотека программиста
Сущность технологии СОМ. Библиотека программиста

В этой книге СОМ исследуется с точки зрения разработчика C++. Написанная ведущим специалистом по модели компонентных объектов СОМ, она раскрывает сущность СОМ, помогая разработчикам правильно понять не только методы модели программирования СОМ, но и ее основу. Понимание мотивов создания СОМ и ее аспектов, касающихся распределенных систем, чрезвычайно важно для тех разработчиков, которые желают пойти дальше простейших приложений СОМ и стать по-настоящему эффективными СОМ-программистами. Показывая, почему СОМ для распределенных систем (Distributed СОМ) работает именно так, а не иначе, Дон Бокс дает вам возможность применять эту модель творчески и эффективно для ежедневных задач программирования.

Дональд Бокс

Программирование, программы, базы данных / Программирование / Книги по IT