Функції CharToOem
Функції strupr, _strupr
Функції strlwr, _strlwr
ПЕРЕТВОРЕННЯ РЯДКІВ
Елементи символьних рядків можуть бути перетворені з одного регістру в іншій. Для цього використовуються стандартні функції _strlwr і _strupr. Слід зазначити, що в деяких версіях компіляторів імена даних функцій можуть випливати без провідного символу підкреслення.
Функція strlwr приймає в якості параметра вказівник на рядок символів, перетворить цей рядок до нижнього регістру (рядкові символи) і повертає вказівник на отриманий рядок. Дана функція має наступний прототип:
char * strlwr( char * str);
Наступний фрагмент показує застосування функції strlwr:
char S [ ] = "Error"; // оголошення й ініціалізація рядка
strlwr (S); // перетворення рядка в нижній регістр
cout << S << '\n'; // вивід на екран "error"
Функція strupr оголошена в такий спосіб:
char * strupr ( char * str);
Дана функція перетворить рядок символів, на який вказує str, у прописні букви (до верхнього регістру). У результаті роботи функції вертається вказівник на отриманий рядок.
|
|
Наведені вище функції перетворення рядків, працюючи з вказівниками, перетворять вихідний рядок, який не завжди може бути відновлена, тому, якщо надалі коді програми буде потрібно скористатися оригіналом символьного рядка, перед використанням функцій strlwr і strupr необхідно зробити копію їх аргументів.
У консольному додатку рядка кирилиці, що містять символи, некоректно відображаються у вікні додатка. Для рішення задачі відповідного перетворення кодів символів у заголовному файлі 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"
Ця функція також перетворить рядокроригінал.