Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ первый курс Alex Жив / C++ Перший курс / old / Lections 1 trim / Додаток до лекції №8 Рядки .doc
Скачиваний:
26
Добавлен:
23.03.2015
Размер:
199.17 Кб
Скачать

Функції stricmp, strcmpi

Дані функції порівнюють два рядки, не розрізняючи регістру символів. Функція stricmp і має синтаксис:

int stricmp (const char *str1, const char *str2 ) ;

Що вертається значення й одержувані параметри ті ж, що й у функції strcmp.

Функція strncmp

Функція strncmp проводить порівняння певного числа перших символів двох рядків. Регістр символів при цьому враховується. Функція має наступний прототип:

int strncmp ( const char* str1, const char* str2, size_t num ) ;

Дана функція порівнює num перших символів двох рядків, на які вказують str1 і str2.

ПЕРЕТВОРЕННЯ РЯДКІВ

Елементи символьних рядків можуть бути перетворені з одного регістру в іншій. Для цього використовуються стандартні функції _strlwr і _strupr. Слід зазначити, що в деяких версіях компіляторів імена даних функцій можуть випливати без провідного символу підкреслення.

Функції strlwr, _strlwr

Функція strlwr приймає в якості параметра вказівник на рядок символів, перетворить цей рядок до нижнього регістру (рядкові символи) і повертає вказівник на отриманий рядок. Дана функція має наступний прототип:

char* strlwr(char* str) ;

Наступний фрагмент показує застосування функції strlwr:

char S [ ] = "Error" ; // оголошення й ініціалізація рядка

strlwr ( S ) ; // перетворення рядка в нижній регістр

cout << S << '\n' ; // вивід на екран "error"

Функції strupr, _strupr

Функція strupr оголошена в такий спосіб:

char* strupr ( char* str ) ;

Дана функція перетворить рядок символів, на який вказує str, у прописні букви ( до верхнього регістру). У результаті роботи функції вертається вказівник на отриманий рядок.

Наведені вище функції перетворення рядків, працюючи з вказівниками, перетворять вихідний рядок, який не завжди може бути відновлена, тому, якщо надалі коді програми буде потрібно скористатися оригіналом символьного рядка, перед використанням функцій strlwr і strupr необхідно зробити копію їх аргументів.

Функції CharToOem

У консольному додатку рядка кирилиці, що містять символи, некоректно відображаються у вікні додатка. Для рішення задачі відповідного перетворення кодів символів у заголовному файлі windows.h оголошена функція Chartooem, синтаксис якої має такий вигляд:

int CharToOem (char* const str1, const char* str2 ) ;

Функція робить перетворення кодів символів рядка str1 таким чином, що рядок символів str2 правильно відображає символи кирилиці. При цьому рядок str1 не змінюється, а розмір строкового масиву str2 повинна бути достатнім для зберігання перетвореного рядка. Наступний приклад робить перетворення кодів символів рядка str1 кирилиці, що містить символи, у рядок str2, яка правильно відображається у вікні додатка:

#include <iostream.h>

#include <windows.h>

void main ()

{

char S1 [ ] = "Кирилиця" ; // оголошення й ініціалізація рядка

char S2 [80] ; // оголошення рядка довжиною 25 символів

Chartooem ( S1, S2 ) ; // перетворення кодів символів кирилиці

сout << S1 << '\n' ; // вивід на екран "шЁшыышУр"

cout << S2 << '\n' ; // вивід на екран "Кирилиця"

}

Зміна порядку символів рядка На зворотній

Функція обігу рядка strrev міняє порядок проходження символів на зворотний (реверс рядка). Дана функція має прототип:

char* strrev ( char* str )

Наступний приклад демонструє роботу функції strrev.

char S [ ] = "Hello" ; // оголошення й ініціалізація рядка

cout << S << '\n' ; // вивід на екран "Hello"

strrev ( S ) ; // реверс рядка

cout << S << '\n' ; // вивід на екран "olleh"

Ця функція також перетворить рядокроригінал.