Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функції операцій над символьними рядками↑ Стр 1 из 2Следующая ⇒ Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Прототипи бібліотечних функцій, призначених для роботи з символьними рядками, оголошені в заголовному файлі <string.h>. Основну групу складають функції, які починаються префіксом str: str...(). У табл. 2.2 описано функції, які найчастіше використовуються у процесах опрацювання символьних рядків. Щоб скоротити записи прототипів функцій у табл. 2.2, в списку параметрів кожної функції вказано тільки імена параметрів. Типи параметрів в оголошеннях цих функцій є такими: const char *s, *sl, *s2; char *sr; unsigned n; int sym;
Символьні рядки, які опрацьовуються функціями <string.h>, мають обов'язково закінчуватись' \0'. У разі звертання до функцій конкатенації (об'єднання) та копіювання рядків треба забезпечити, щоб розмірність масиву символів sr була достатньою для запису рядка результату, оскільки функції не контролюють довжин рядків. Крім цього, рядки sr і s у функціях конкатенації та копіювання не повинні перекриватись. /*****************************************************/ /* Видалення підрядка зі заданого символьного рядка */ /*****************************************************/ #include <conio.h> #include <iostream> #include <string.h>
using namespace std;
int main (void) { char str[]= "abcdef # 12345679 # uvwxyz"; /* рядок */ char *p1, *p2; /* вказівники на початок і кінець підрядка */
cout << "Vkhidnyj rjadok: "; cout << str << endl << endl;; p1 = strchr(str, '#'); /* перший символ '#' */ p2 = strrchr(str, '#'); /* останній символ '#' */ strcpy (p1, p2+1); /* перенесення кінцевої частини рядка */
cout << "Rjadok pislja vyluchennja: "; cout << str << endl;
getch();
return 0; }
Щоб вилучити підрядок, знаходимо його початок (перший символ '#' у str) і кінець (останній символ '#'). Потім переносимо, використовуючи функцію strcpy(), кінцеву частину основного рядка на місце підрядка, який треба видалити.
Табл. 2.2 Основні функції опрацювання символьних рядків
Останньою в табл. 2.2 записана функція strdup(), яка заносить копію заданого символьного рядка (з нуль-символом включно) у динамічну пам’ять та повертає адресу, за якою записано рядок. Функція strdup() не належить до функцій, що підтримуютьс стандартом мови С/С++, хоча вона входить до складу більшості С-бібліотек.
Функція виділення лексем. Зупинимось детальніше на функції strtok(), оголошення якої наступне: char* strtok(char* str, const char* lim); Ця функція виконує поділ символьного рядка str на окремі лексеми, записуючи після кожної лексеми '\0'. Рядок lim задає набір символів, якими можуть бути обмежені лексеми рядка str (нуль-символ у переліку обмежувачів вказувати не треба). Для виділення всіх лексем символьного рядка функцію використовують циклічно. У першому звертанні до strtok() вказують адресу початку рядка, а функція повертає адресу першої знайденої лексеми. У наступних звертаннях до strtok() замість першого параметра записують порожній вказівник NULL, а функція повертає адресу наступної лексеми рядка. Коли всі лексеми виділені, функція повертає NULL.
/***********************************************/ /* Виділення слів-лексем із символьного рядка */ /***********************************************/ #include <iostream> #include <cstring> #include <conio.h>
using namespace std;
int main(void) { char example[]="Символи, рядки (виділення слів-лексем)"; const char *limits = ",.;()-"; /* символи-обмежувачі лексем */ char *pw; /* вказівник на лексеми */
setlocale(0,".1251"); /* Встановлення локалізації для виводу кириличних символів */
cout << "Вхідний текст: " << example << endl; cout << "\n Слова: \n"; pw = strtok (example, limits); /* знаходження першої лексеми */ while(pw!=NULL) { cout << pw << endl; pw = strtok (NULL, limits); /* пошук наступної лексеми */ } _getch(); return 0; }
Функції перетворення рядків символів у числа та зворотних перетворень Перетворення "символьний рядок => число". У багатьох задачах необхідно Перетворювати числові дані, записані у формі текстових рядків, в одну з внутрішніх форм збереження чисел. Такі перетворення реалізують стандартні бібліотечні функції, оголошені в <stdlib. h> (табл.2.3). Типи параметрів цих функцій наступні:
const char *st; char **end; int base;
Табл. 2.3 Функції перетворення символьних рядків у числа
Перетворення "число => рядок". Бібліотека мови програмування С++ додатково містить ряд функцій зворотних перетворень "число => символьний рядок серед яких:
char* itoa(int num, const char* str, int base); char* ltoa(long num, const char* str, int base); char* ultoa(unsigned long num, const char* str, int base);
Ці функції відрізняються між собою тільки типом параметра num – цілого числа, яке потрібно перетворити. Всі три функції формують із числа num рядок символів, що відповідає запису цього числа в системі числення з основою base, і повертають вказівник на перший символ створеного рядка. Сформований рядок записується за адресою str. Функції itoa() та ltoa() записують від'ємні числа зі знаком мінус
|
||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 547; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.57.5 (0.007 с.) |