Теоретичні відомості
Символьний рядок (char *) – це послідовність символів, яка знаходиться в подвійний лапках. Символьний рядок є масивом символів, кожен символ – елемент масиву. Кожен рядок символів закінчується символом «\0», який вказує на кінець рядка. Прототипи стандартних функцій обробки символьних рядкiв знаходяться в заголовному файлі string.h. Стандартнi функції працюють тiльки з рядками символiв, а не з масивами символiв.
В С++ Builder тип рядка AnsiString реалізований, як клас, який об’явлено у файлі vcl/dstring.h. Це рядки з нульовим символом в кінці. При об’яві змінні типу AnsiString заповнюються порожніми рядками.
Для AnsiString визначені операції відношення: ==, !=, >, <, =, >=, <=. Порівняння відбувається з урахуванням регістру. Порівнюються коди символів., починаючи з першого, і якщо чергові символи не однакові, рядок, який вміщує символ з меншим кодом вважається меншим. Якщо всі символи співпали, але один рядок довший, то він вважається більшим.
Для AnsiString визначені операції присвоєння =, += і операція конкатенації (+). Визначена також операція індексації []. Індекси починається з одиниці, наприклад, якщо s1=”Четвер”, то s1[1]=’Ч’, s1[2]=’е’,…
Тип AnsiString використовується для ряду властивостей компонентів С++ Builder. Наприклад, для таких як властивість Сaption в мітках, розділів меню та ін.
Приклад 1.
Label->Caption=Edit1->Text+” “ + Edit2->Text;
Таблиця 5.1 - Деякі функції обробки символьних рядків типу *char
Назва функції | Призначення |
strlen() | Визначає довжину рядка str. |
strcat() | До рядка str1 дописується рядок str2 (конкатенація рядків). |
strncat() | Дописує kol символів рядка str2 до рядка str1 (конкатенація рядків). |
strchr() | Шукає в рядку str перше розміщення вказаного символу. |
strrchr() | Шукає в рядку str останнє розміщення вказаного символу. |
strcmp() | Порівнює рядки str1 та str2. Результат від’ємний, якщо str1<str2; дорівнює нулю, якщо str1==str2 і більше нуля, якщо str1>str2. Порівнюються коди символiв. |
strcnmp() | Порівнює перших kol символів в рядках str1 та str2. Аналогiчно strcmp. |
strcpy() | Копіює байти рядка str2 в рядок str1. |
strncpy() | Копіює kol символів рядка str2 в рядок str1. |
strlwr() | Перетворює літери верхнього регістра в рядку на відповідні літери нижнього регістра. |
strupr() | Перетворює літери нижнього регістра в рядку на відповідні літери верхнього регістра. |
strstr() | Шукає в рядку str1 підрядки str2. Повертає вказівник на цей елемент в рядку str1, з якого починається підрядок str2. |
Таблиця 5.2. - Деякі функції обробки символьних рядків типу AnsiString
Назва функції | Призначення |
Length() | Визначає довжину рядка |
Pos() | Шукає перше входження підрядка.Якщо пошук успішний функція повертає індекс першого символу знайденого входження. Якщо підрядок не знайдено повертає нуль. |
SubString() | Визначає підрядки, параметри: початковий і кінцевий індекс. |
Delete() | Видаляє підрядок, параметри: початковий індекс і кількість символів, які слід видалити. |
Insert() | Вставляє в рядок підрядок, початковий і заданий індекс. |
AnsiUpperCase() | Перетворює рядок символів у верхній регістр. |
AnsiLowerCase() | Перетворює рядок символів у нижній регістр. |