- •Операції з рядками Довідка з функцій. (Не для друку)
- •Визначення довжини рядків
- •Копіювання рядків
- •Функція strcpy
- •Функція strncpy
- •Функція strdup
- •Конкатенація рядків
- •Функція strсat
- •Функція strncat
- •Порівняння рядків
- •Функція strcmp
- •Функції stricmp, strcmpi
- •Функції CharToOem
- •Зміна порядку символів рядка На зворотній
- •Функції перевірки діапазону
- •Пошук символів
- •Функція strchr
- •Функція strrchr
- •Функція strspn
- •Функція strcspn
- •Функція strpbrk
- •Пошук подстрок
- •Функція strstr
- •Функція strtok
- •Функції перетворення типу
- •Перетворення рядка в число Функції atoi і atol
- •Функції _atoi64
- •Функції atof
- •Функції strtod
- •Перетворення числа в рядок Функції _itoa і _ltoa
- •Функція gcvt
Функція strtok
Функція strtok має синтаксис:
char* strtok ( char* str, const char* delim)
Ця функція виконує пошук у рядку str подстроки, обрамленої по обидва боки будь-яким символомдроздільником з рядка delim. У випадку успішного пошуку дана функція обрізає рядок str, поміщаючи символ '\0' у місці, де закінчується знайдена лексема. При повторному пошуку лексеми в зазначеному рядку str першим параметром слід указувати NULL. Тому що strtok модифікує рядокроригінал, рекомендується попередньо зберігати копію вихідного рядка. Наведений нижче приклад ілюструє вищесказане.
Припустимо, необхідно розбити пропозицію, наявне в строковому масиві, за словами й вивести кожне з них на екран.
char S [81] ; // оголошення рядка
char* ps ; // оголошення вказівника на рядок
char* Del="U.?!,"; // оголошення й ініціалізація вказівника на рядок,
// утримуючу набір роздільників
Chartooem ("Назвався груздем, нарікай на сябя!",S) ; // перетворення рядка
ps = strtok ( S, Del ) ; // ініціалізація вказівника на рядок адресою першого слова
if ( ps ) cout << ps << '\n' ; // якщо вказівник існує, виводить на екран перше слово
while ( ps ) // доти, поки вказівник існує
{
ps=strtok ( NULL, Del ) ; // вказівник одержує адресу чергового слова
if ( ps ) cout << ps << '\n' ; // якщо вказівник існує, виводить на екран чергове слово
}
У даній програмі оголошується підлягаюча аналізу рядок S, подстрока Del, що містить набір роздільників (Delimiters), і вказівник на символьний тип даних ps. Виклик функції strtok (S, Del) сканує рядок S і як тільки в ній зустрінеться будь-який символ, що входить у подстроку Delimiters ( у цьому випадку це символ пробілу), вказівник ps стане посилатися на початок вихідного рядка до знайденого символу. Тобто ps буде містити:
*ps = "Назвався" ;
Завдяки тому, що функція strtok поміщає в знайденім місці нуль-термінатор ('\0'), вихідний рядок модифікується. Таким чином, масив символів S прийме значення:
"груздем, нарікай на сябя!"
Здійснивши перевірку вказівника ps на існування в операторові if ( ps ), знайдене слово виводиться на екран. Далі в циклі за допомогою функції strtok перебуває останній нуль-термінатор рядка S:
ps = strtok ( NULL, Del ) ;
що, фактично, відповідає локалізації наступного слова пропозиції, і знайдена послідовність символів виводиться на екран.
Функції перетворення типу
Функції перетворення даних досить часто використовуються, як випливає из назви, для перетворення одного типу даних в інший тип. У наведеній нижче таблиці перераховані основні функції, їх прототипи підключаються в заголовному файлі stdlib.h.
Найменування |
Короткий опис |
atof |
перетворить рядок символів у число із плаваючою крапкою |
atoi |
перетворить рядок символів у рядок типу int |
atol |
перетворить рядок символів у число типу long |
strtod |
перетворить рядок символів у число із плаваючою крапкою типу double |
strtol |
перетворить рядок символів у число типу long |
strtoul |
перетворить рядок символів у число типу unsigned long |
ecvt |
перетворить число із плаваючою крапкою типу double у рядок символів; десяткова крапка й знак числа не включаються в отриманий рядок; позиція крапки й знак числа вертаються окремо |
fcvt |
ідентично ecvt, але округляє отримане значення до заданого числа цифр |
gcvt |
перетворить число із плаваючою крапкою типу double у рядок символів, включаючи символ десяткової крапки й використовуючи специфіковане число цифр |
itoa |
перетворить число типу int у рядок символів |
ltoa |
перетворить число типу long у рядок символів |
ultoa |
перетворить число типу unsigned long у рядок символів |
Найчастіше, дані функції використовуються для перетворення чисел, уведених у вигляді символьних рядків, у числову представлення, а також для виконання певних арифметичних операцій над ними й зворотне перетворення в рядок символів. Розглянемо самі широко використовувані з них.