- •Лабораторна робота № 5
- •Теоретична частина
- •Введення рядків.
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Завдання на лабораторну роботу
- •Звіт по лабораторній роботі повинен містити:
Лабораторна робота № 5
Тема: Рядки в С++.
Мета: отримання навичок при обробці рядків.
Теоретична частина
C++ не містить стандартного типу даних "рядок". Замість цього він підтримує масиви символів, що завершуються нуль-символом. У C++ опис рядків має наступний вигляд:
char str[20]; - оголошений рядок, довгою 20 символів.
Ініціалізація рядків :
str="Привіт"!; - рядок символів, поміщений в подвійні лапки, є строковою константою.
char s[ ] = {'С', 'т', 'р', 'о', 'к', 'а', '\0'};
ФУНКЦІЇ ДЛЯ РОБОТИ З РЯДКАМИ.
Заголовний файл для рядків - <string.h>.
Функції:
Ім'я |
Опис |
char * strcpy (char *dest, const char *src). |
копіює рядок src в рядок dest |
int strcmp (const char *s1, const char *s2) |
порівнює рядки, якщо s1 = = s2 те повертає 0, якщо s1 <s2 повертає негативне значення, якщо s1 >s2 повертає позитивне значення |
char * strcat (char *dest, const char *src) |
об'єднання рядків, приєднує src до dest |
int strstr (const char *s1, const char *s2) |
пошук підрядка, повертає покажчик на перше входження s2 в s1. Якщо збіги не виявлено, повертається нульовий покажчик. |
int strlen (const char *s) |
визначає довжину рядка s |
char*strtok(char *s1, char *s2) |
**повертає покажчик на наступне слово в рядку s1, s2 - роздільники, які відділяють слова в рядку s1 |
* * щоб розділити рядок на слова, при першому виклику strtok параметр s1 повинен вказувати на на початок цього рядка, при наступних викликах як s1 треба використовувати нульовий покажчик.
Заголовний файл <stdlib.h>
Функції:
Ім'я |
Опис |
double atof(const char* p) |
перетворить переданий рядок в double; |
int atoi (const char* p) |
перетворить переданий рядок в int; |
long atol (const char* p) |
перетворить переданий рядок в long. |
Заголовні файли <ctype. h>
Функції для роботи з символами
Ім'я |
Перевірка на приналежність символу множині |
isalnum |
букв і цифр (A - Z, a - z, 0-9) |
isalfa |
букв (A - Z, a - z) |
iscntrl |
символів (з кодами 0.31 і 127), що управляють |
isdigit |
цифр (0-9) |
isgraph |
друкованих символів, окрім пропуску (isalfa | isdigit | ispunct) |
islower |
букв нижнього регістра (a - z) |
isprint |
друкованих символів |
ispunct |
знаків пунктуації |
isspace |
символів-роздільників |
isupper |
букв верхнього регістра (A - Z) |
isxdigit |
шістнадцятиричних цифр (A - F, a - f, 0-9) |
Функції приймають величину типу int і повертають значення true, якщо умова виконується. Рекомендується користуватися стандартними функціями, а не писати власні цикли перевірки, оскільки це знижує кількість помилок в програмі. Окрім описаних вище, в бібліотеці є функції tolower і toupper, що переводять символ латинського алфавіту відповідно в нижній і верхній регістр.
Приклад використання стандартних функцій.
##include <string.h>
##1nclude <iostream.h>
void main ()
{
char cl[80], c2[80], с3[60];// Рядки із завершуючим нулем
// // Привласнення рядків
strcpy(cl, "Мова програмування З++");
strcpy(c2, cl);
strcpy(c3, "треба вивчити"!);
cout<<c1<<'\n';
cout<<c2<<'\n';
// // Конкатенація рядків
strcpy(c1, c3);
cout<<c1<<'\n';
// // Порівняння рядків
if (strcmp(c2, c3)< 0) cout " c2;
else cout " c3;
}