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

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.h>

#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 ( ) і putch ( ) і програма буде працювати після компіляції її в DOS.

3.2.2 Рядки як символьні масиви

У мові Сі і ранніх версіях мови С++ рядки розглядалися як символьні масиви і вся робота з ними ґрунтувалася на використанні цих масивів. Розроблена бібліотека функцій <string.h> містить могутні засоби для роботи зі строковими масивами .

Для опису рядка використовуються звичайні засоби опису масивів, наприклад: char str [25]; . Індексування такого масиву, як і будь-якого іншого , починається з нуля. Символьні послідовності, розділені тільки проміжками, розглядаються як один рядок, тобто запис:

" У той рік осіння

погода"

ідентична рядку " У той рік осіння погода".

Усі рядки, у тому числі й ідентичні, у програмі розглядаються як різні об'єкти. Адреса першого символу рядка може використовуватися по-різному:

 якщо рядок застосовується при ініціалізації масиву типу char, адреса його першого елемента стає синонімом імені масиву. Наприклад, ідентичними є наступні описи масиву:

char st [] = "Слово";

char st [6] = "Слово";

char st [6] = {'С' 'л' 'о' 'в' 'о' '\0'};

 якщо рядок використовується для ініціалізації покажчика типу char*, адреса першого символу рядка буде початковим значенням покажчика, наприклад:

char *pst = "Слово"; ,

тут описується змінна - покажчик pst , що одержує початкове значення, рівне адресі першого елемента (символ С);

 якщо рядок використовується у виразі (там, де дозволяється застосовувати покажчик), те компілятор підставляє у вираз рядка адресу його першого символу, наприклад:

char *pst;

pst = " Перший символ"; ,

тут pst  одержує адресу букви "П", тобто при виконанні операції присвоювання в комірку пам'яті , відведену для покажчика pst , записується не масив символів , а тільки покажчик на його початок, тобто адреса першого символу рядка.

При описі символьного масиву, його ім'я  не змінна, а покажчик-константа на початок рядка. Оскільки для константи не приділяється адреса в пам'яті, то її не можна використовувати в деяких операціях адресної арифметики, наприклад, не можна здійснювати операцію присвоювання вигляду:

char st [20];

st = " Петров"; // запис невірний, тому що не можна змінити значення st

Використання елементів масиву здійснюється через індекси або через покажчики. Для доступу до будь-якого символу рядка використовується індекс масиву char , наприклад, якщо описана змінна char str [3] , то третім елементом масиву можна скористатися, записавши: str [3] або *(str+3) .

При роботі з елементами масивів рядків, тобто двовимірним масивам, варто використовувати або індекси масиву, або індекси покажчиків, наприклад, якщо описаний список прізвищ

char spis [5] [15]; ,

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

spis [i] [j] або *(spis [i] + j).

Аналогічно при оголошенні масивів покажчиків char *str [5] (указує на 5 елементів, кожний з який указує на рядок), а доступ до символу рядка можна здійснити, записавши *(str [i]+j).