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.
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-ой строке программы с помощью функции