Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ввод_вывод на консоль C++.doc
Скачиваний:
4
Добавлен:
17.08.2019
Размер:
242.18 Кб
Скачать

Вывод и ввод одного символа за один раз

В зависимости от назначения вашей программы вам, возможно, потребуется выводить символы на дисплей или читать с клавиатуры по одному символу за один раз. Для вывода одного символа за один раз ваши программы могут использовать функцию cout.put. Следующая программа COUTPUT.CPP использует эту функцию для вывода на экран сообщения Учимся программировать на языке C++! по одному символу за раз:

#include <iostream.h>

void main(void)

{ char string[] = "Учимся программировать на языке C++!"; int i; for (i = 0; string[i]; i++) cout.put(string[i]) ; }

Библиотека этапа выполнения предоставляет функцию с именем toupper, которая возвращает заглавный эквивалент строчной буквы. Следующая программа COUTUPPR.CPP использует функцию toupper для преобразования символа в верхний регистр, а затем выводит эту букву с помощью cout.put.

#include <iostream.h>

#include <ctype.h> // прототип toupper

void main(void)

{ char string[] = "C++ language"; int i; for (i = 0; string[i]; i++) cout.put(toupper(string[i])); cout << endl << "Результирующая строка: " << string << endl; }

Если вы откомпилируете и запустите эту программу, на экране дисплея появится следующий вывод*:

С:> COUTUPPR <ENTER>

C++ LANGUAGE

Результирующая строка: C++ language

* К сожалению, функция toupper применима только к английским буквам. Прим. перев.

Чтение ввода с клавиатуры по одному символу за раз

Точно так же, как cout предоставляет функцию cout.put для вывода символа, cin предоставляет функцию cin.get, которая позволяет вам читать один символ данных. Чтобы воспользоваться функцией cin.get, вы просто присваиваете переменной возвращаемый этой функцией символ, как показано ниже:

letter = cin.get();

Следующая программа CIN_GET.CPP выводит сообщение, в ответ на которое вам необходимо ввести Y или N. Затем она повторяет в цикле вызов cin.get для чтения символов, пока не получит Y или N:

#include <iostream.h>

#include <ctype.h>

void main(void)

{ char letter; cout << "Хотите продолжать? (Y/N): "; do

{ letter = cin.get(); // Преобразовать к верхнему регистру letter = toupper(letter); } while ((letter != 'Y') && (letter != 'N')); cout << endl << "Вы ввели " << letter << endl; }

Чтение с клавиатуры целой строки

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

cin.getline(string, 64);

Когда cin.get читает символы с клавиатуры, она не будет читать символов больше, чем может вместить строка. Удобным способом определить размер массива является использование оператора C++ sizeof, как показано ниже:

сin.getline(string, sizeof(string));

Если позже вы измените размер массива, то вам не нужно будет искать и изменять каждый оператор с cin.get, встречающийся в вашей программе. Вместо этого оператор sizeof' будет использовать корректный размер массива. Следующая программа GETLINE.CPP использует функцию cin.getline для чтения с клавиатуры строки текста:

#include <iostream.h>

void main(void)

{ char string[128]; cout << "Введите строку текста и нажмите Enter" << endl; cin.getline(string, sizeof(string)); cout << "Вы ввели: " << string << endl; }

Когда вы читаете символы с клавиатуры, то, возможно, вам понадобится читать символы вплоть до и включая определенный символ. Когда такой символ будет прочитан, возможно, вы захотите завершить операцию ввода. Для выполнения подобной операции ваша программа может передать искомый символ в cin.getline. Например, следующий вызов заставляет функцию cin.getline читать строку текста, пока не встретится возврат каретки, или пока не будут прочитаны 64 символа, или пока не встретится буква Я:

cin.getline(string, 64, 'Я');

Следующая программа UNTIL_Z.CPP использует cin.getline для чтения строки текста или символов вплоть до появления буквы Я (включая и эту букву):

#include <iostream.h>

void main(void)

{ char string[128]; cout << "Введите строку текста и нажмите Enter" << endl; cin.getline(string, sizeof(string), 'Я'); cout << "Вы ввели: " << string << endl; }

Откомпилируйте и запустите эту программу. Экспериментируйте с различными строками текста. Некоторые из них начинайте с буквы Я, некоторые заканчивайте буквой Я, а некоторые пусть вообще не содержат букву Я.