Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

5.3. Застосування бібліотечних функцій для оброблення рядків

Мова програмування C++ підтримує багато функцій для оброблення рядків. Найпо­ши­ре­ні­ши­ми з них є такі: strерy(), strcpy(), strlen(), strcmp().

Для виклику всіх цих функцій у програму необхідно включити заголовок <cstring>. Тепер познайомимося з кожною функцією окремо.

5.3.1. Використання функції strcpy()

Загальний формат виклику функції strcpy() є таким:

strcpy(to, from);

Функція strcpy() копіює вміст рядка from в рядок to. Необхідно пам'ятати, масив, який використовують для зберігання рядка to, повинен бути достатньо великим, щоб в нього можна було помістити рядок з масиву from. Інакше масив to переповниться, тобто відбудеться вихід за його межі, що може призвести до руйнування програми.

Використання функції strcpy() продемонстровано у наведеному нижче коді програми, яка копіює рядок "Привіт" в рядок strMas:

Код програми 5.6. Демонстрація механізму використання функції strcpy()

#include <iostream> // Для потокового введення-виведення

#include <cstring> // Для роботи з рядковими типами даних

using namespace std; // Використання стандартного простору імен

int main()

{

char strMas[80];

strcpy(strMas, "Привіт");

cout << strMas;

getch(); return 0;

}

5.3.2. Використання функції strcpy()

Звернення до функції strcpy() має такий формат:

strcpy(s1, s2);

Функція strcpy() приєднує рядок s2 до кінця рядка s1; при цьому рядок s2 не змінюється. Обидва рядки повинні завершуватися нульовим символом. Результат виклику цієї функції, тобто остаточний рядок s1 також завершуватиметься нульовим символом. Використання функції strcpy() продемонстровано у наведеному нижче коді програми, яка повинна вивести на екран рядок "Привіт усім!".

Код програми 5.7. Демонстрація механізму використання функції strcpy()

#include <iostream> // Для потокового введення-виведення

#include <cstring> // Для роботи з рядковими типами даних

using namespace std; // Використання стандартного простору імен

int main()

{

char s1[20], s2[10];

strcpy(s1, "Привіт");

strcpy(s2, " усім!");

strcpy(s1, s2);

cout << s1;

getch(); return 0;

}

5.3.3. Використання функції strcmp()

Звернення до функції strcmp() має такий формат:

strcmp(s1, s2);

Функція strcmp() порівнює рядок s2 з рядком s1 і повертає значення 0, якщо вони однакові. Якщо рядок s1 лексикографічно (тобто відповідно до алфавітного порядку) більший від рядка s2, то повертається позитивне число. Якщо рядок s1 лексикографічно менший від рядка s2, то повертається негативне число. Використання функції strcpy() продемонстровано у наведеному нижче коді програми, яка слугує для перевірки правильності пароля, введеного користувачем (для введення пароля з клавіатури і його верифікації слугує функція password()).

Код програми 5.8. Демонстрація механізму використання функції strcmp()

#include <iostream> // Для потокового введення-виведення

#include <cstring> // Для роботи з рядковими типами даних

#include <cstdio> // Для підтримки системи введення-виведення

using namespace std; // Використання стандартного простору імен

bool password();

int main()

{

if(password()) cout << "Вхід дозволено.\n";

else cout << "У доступі відмовлено.\n";

getch(); return 0;

}

// Функція повертає значення true, якщо пароль прийнятий, і

// значення false інакше.

bool password()

{

char sMas[80];

cout << "Введіть пароль: ";

gets(sMas);

if(strcmp(sMas, "пароль")) { // Рядки різні.

cout << "Пароль недійсний.\n";

return false;

}

// Порівнювані рядки збігаються

return true;

}

Під час застосування функції strcmp() важливо пам'ятати, що вона повертає число Про (тобто значення false), якщо порівнювані рядки однакові. Отже, якщо Вам необхідно виконати певні дії за умови збігу рядків, то програміст повинен використовувати оператор НЕ (!). Наприклад, у процесі виконання наведеної нижче програми запит вхідних даних продовжується доти, доки користувач не введе слово "Вихід".

Код програми 5.9. Демонстрація припинення введення вхідних даних за умови збігу рядків

#include <iostream> // Для потокового введення-виведення

#include <cstdio> // Для підтримки системи введення-виведення

#include <cstring> // Для роботи з рядковими типами даних

using namespace std; // Використання стандартного простору імен

int main()

{

char sMas[80];

for(;;) {

cout << "Введіть рядок: ";

gets(sMas);

if(!strcmp("Вихід", sMas)) break;

}

getch(); return 0;

}