372 Часть II. Программирование на C++

Совет

[[Общепринято вместо числовых значений вроде 128 использовать константы:

const int МЙХ = 128;

char buf[ МДХ ] ;

cin.get( buf, MAX);

В качестве альтернативы можно посоветовать макрос sizeof. В этом случае нет необходимости вводить дополнительные имена:

char buf[ 128 ] ;

cin.get( buf, sizeof(buf)/sizeof(buf[0]));

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

Самое существенное различие между функциями-членами get и getiine состоит в том, что get, в отличие от getiine, не удаляет разделители из потока ввода. Если вам нужно ввести строку текста, воспользуйтесь функцией getiine. Приведенный выше фрагмент прекрасно работает при замене get

на getiine.

gcount и read. Функция gcount возвращает число символов, считанных

ПрИ Последнем ВЫЗОВе ФУНКЦИЙ get, getiine И read. У фуНКЦИИ read Два

аргумента: первый — это символьный массив, а второй — число вводимых символов; выяснить количество реально считанных символов можно с помощью gcount.

h03121.jpg

1 // READ.CPP — демонстрация функций-членов read и gcount

2 ftinclude <iostream.h>

3 void mainO

4 (

5 char text[10];

6 cout « "Введите любой текст" « endl;

7 cin.read( text, 10) ;

8 int count = cin.gcount();

9 cout « "Текст: " « text « endl

10: « "Количество символов: " « count « endl

11: « "Следующий символ: " « cin.peekf);

12: }

В этой несложной программе продемонстрированы функции-члены read, gcount и peek. Программа ожидает ввода по меньшей мере 10 символов и не возвращает управление, пока не будет нажата клавиша <Enter>. В буфер text попадет только 10 символов, в чем можно убедиться по значению переменной count. В последней 11-ой строке программы с помощью функции