|
Программирование >> Дополнительные возможности наследования
ЯРИМЕЧАИИЕ Для выхода из этой программы придется ввести символ конца файла с клавиатуры. С этой целью в операционной системе DOS используется комбинация клавиш <Ctrl+Z>, а в UNIX - <Ctrl+D>.
В строке 6 объявляется локальная симюльная переменная. В цикле while символ, полученный от cin.getO, присваивается ch, и если возвращенный символ не EOF, то он выводится на печать. Цикл завершается вводом EOF, комбинацией клавиш <Ctrl+Z> в DOS или <Qrl+D> в UNIX. Следует отметить, что не во всех версиях библиотеки istream поддерживается функция-член get(), хотя сейчас она является частью стандарта ANSI/ISO. Использование функции get() с оарамешром При установке в функции get() параметра, указывающего на символьную переменную, этой переменной присваивается очередной символ потока ввода. При этом возвращается объект iostream, что позволяет вводить последовательный ряд значений, как показано в листинге 16.5. Аисшннг 16.5. Нснокьзоваиие фуикцнн get() с иарамвшрами 2 3 4 5 6 7 8 9 Листинг 16.5. Использование get() с параметрами Sinclude <iostream.h> int mainO { char a, b, c; cout << Enter three letters: ; cin.get(a).get(b).get(c); cout a: return 0; a \ nb: b X no: с endl; Enter three letters: one ftВ строке 6 объявляются символьные переменные а, b и с. В строке 10 *** трижды последовательно вызывается функция cin.getO. Сначала вызывается cin. get (а), в результате первый символ буфера ввода заносится в а и возвращается объект cin, после чего происходит вызов cin.get(b), присваивающий очередной символ буфера переменной Ь. Аналогичным образом вызывается функция cin.get(c), присваивающая следующий символ переменной с. Поскольку Cin.getO возвращает cin, можно бьшо записать это следующим образом: cin.get(a) b; В этом случае cin.get(a) возвратит cin, поэтому следующее выражение будет иметь вид: cin b;. Рекомендуется Рекомендуется Используйте оператор ввода , когда необходимо вводить значения, разделенные пробелами в строке. Используйте функцию get() с символьным параметром, если нужно последовательно вводить все символы строки,; включая пробелы. Ввод строк со стандартного дстрооства ввода Для заполнения массива символов можно использовать как оператор ввода ( ), так и методы get() и getlineO. Еще один вариант перегруженной функции get () принимает три параметра. Первый параметр - это указатель на массив символов, второй указывает максимальное число символов в строке с учетом концевого нулевого символа, добавляемого автоматически, и третий задает разделитель строк. Если для второго параметра установлено значение 20, функция get() введет 19 символов и оборвет ввод строки, на которую указывал первый параметр, после чего добавит концевой нулевой символ. Третий параметр по умолчанию устанавливается как символ разрыва строки (Дп). Если этот символ повстречается раньще, чем будет введен последний допустимый символ строки, функция вставит в этом месте концевой нулевой символ, но символ разрыва строки при этом останется в буфере и будет считан очередной функцией ввода. Реализация этого метода ввода показана в листинге 16.6. Аисшинг 16.6. Исиокьзование функции get() у я занвжнвиня массива снмвпжпв 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Листинг 16.6. Использование get()c массивом символов ftinclude <iostream.h> int main() { char string0ne[256]; char stringTwo[256]; cout << Enter string one: ; cin.get(stringOne,256); cout << stringOne: << stringOne << endl; cout Enter string two: ; cin stringTwo; cout << StringTwo: << stringTwo endl; return 0; Enter string one: Now is the time StringOne: Now is the time Enter string two: For all good StringTwo: For В строках 6 и 7 создаются два массива символов. Строка 9 предлагает пользователю ввести строку, после чего в строке 10 вызывается функция Cin.getO с тремя параметрами. Первый параметр ссылается на заполняемый массив символов, второй задает максимально возможное количество символов в строке с учетом нулевого концевого символа (ДО). Третий параметр не установлен, и используется заданный по умолчанию символ разрыва строки. Пользователь вводит строку Now is the time. Вся строка вместе с концевым нулевым символом помешается в массив stringOne. Вторую строку пользователю предлагается ввести в строке 13, однако в этом случае уже используется оператор ввода. Поскольку он считывает строку до первого пробела, во втором случае в буфер заносится строка Все, что, конечно же, неправильно. Один из способов решения этой проблемы заключается в использовании функции getlineO, как показано в листинге 16.7. AucniuuB 16.7. Иснокьзованив функции getlineO Листинг 16.7. Использование getlineO flinclude <iostream.h> int mainO { char stringOne[256]; char stringTwo[256]; char stringThree[256];
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |