Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-1 Программирование С++ / метод_лб_ пз_Інформатика.doc
Скачиваний:
5
Добавлен:
31.01.2021
Размер:
699.9 Кб
Скачать

3.2.1 Організація символьного введення - виведення

Функції символьного введення - виведення мови С++ є базовими функціями, необхідними для написання могутніх підпрограм введення-виведення даних.

Мова С++ сприймає все введення-виведення як потоки символів. Потік символів може бути організований: із клавіатури, файлу, модему і т.д. Операційна система забезпечує стикування пристроїв, а С++ може використовувати ті самі функції для введення - виведення, наприклад, як із клавіатури, так і з модему. От чому таке велике значення приділяється обробці символьних типів даних. Для обслуговування операцій над рядками використовується файл <string.h> . При організації введення-виведення в мові С++ завжди передбачається, що введення буде здійснюватися з stdin, що означає стандартний пристрій введення (звичайно клавіатура), а виведення здійснюється на стандартний пристрій виведення (звичайно дисплей) з ім'ям stdout. Ці потоки можна перепризначити на роздрук — ім'я stdprn, послідовний порт — ім'я stdaux, повідомлення про помилки – ім'я stderr. Оператор cout здійснює виведення на екран тільки тому, що більшість комп'ютерів за замовчуванням stdout направляє виведення на екран, а оператор cin здійснює введення з клавіатури за тою же причиною, тому що клавіатура є стандартним пристроєм введення (stdin).

Розглянемо порядок дій при перепризначенні потоку виведення даних на принтер :

 підключення файлу заголовка ofstream ;

 виконання перепризначення виведення на принтер за допомогою операторів

ofstream prn ("PRN");

prn << " Виведення до роздруку повідомлення "<< endl;

prn << name1 << name2 ... <<endl;

Такий порядок дій застосовується при компіляції як задача DOS і нижче приведена його програмна реалізація .

Приклад 3.1 Вивести дані (прізвище й ім'я) на принтер.

// P3_1.СPPвиведення прізвища й імені на принтер

#include < fstream>

#include < iostream>

using namespace std;

main ( )

{

char fio [15];

char name [10];

cout << "Введіть прізвище ";

cin >> fio;

cout << "Введіть ім'я ";

cin >> name;

// Посилка імен fio і name на принтер

ofstream prn ("PRN");

prn << " Виведення імені і прізвища " << endl;

prn << name << fio << endl;

return 0;

}

Для організації символьного введення - виведення використовуються функції буферизированого (get ( ) і put ( )) і небуферизированого (getch ( ) і (putch ( )) введення – виведення, формати цих функцій наступні:

Device . Get (char_var);

device . put (char_var); ,

де device може бути будь-яким стандартним пристроєм введення–виведення.

Як видно з форматів функцій вони вводять або виводять по одному символу зі стандартних пристроїв. Функція get( ) припиняє виконання програми, сприймає один символ, що попадає спочатку в буфер і після натискання ENTER передає вміст буфера в програму. Функція getch( ) при одержанні символу, що вводиться, не виводить його на екран. Для відображення їх на екрані використовують функцію getche ( ). У функціях get( ) і put ( ) може бути перепризначений пристрій введення - виведення. Так для відкриття модему як пристрою введення - виведення і читання з нього треба використовувати заголовний файл ifstream.

Приклад 3.2 Скласти програму, що реалізує введення п'яти символів і збереження їх у вигляді масиву .

// P3_2.CPP робота з масивами символів

// Використання функції getch( ) і put ( )

#include < fstream>

#include < iostream>

using namespace std;

#include < conio.h >

main ( )

{

int str;

char slovo [5];

cout << "Введіть 5 символів " << endl;

for ( str = 0; str < 5; str++)

{

slovo [str] = getch ( )

}

// Посилка масиву символів на принтер

ofstream prn ("PRN");

prn << " Виведення масиву символів” << endl;

for( str = 0; str < 5 ; str++)

{

prn.put ( slovo [str] );

}

return 0;

}

У цій програмі використовується файл заголовка <conio.h>, у якому описані getch ( ) і put( ) і програма буде працювати після компіляції її в DOS.