Изменение регистра символов

Для изменения регистра символов предназначены следующие функции:

  • towupper() — возвращает код символа в верхнем регистре. Если преобразования регистра не было, то код символа возвращается без изменений. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
wint_t towupper(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << (wchar_t)std::towupper(L'w') << std::endl; // W
std::wcout << (wchar_t)std::towupper(L'б') << std::endl; // Б
wchar_t str[] = L"абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
for (int i = 0, len = (int)std::wcslen(str); i < len; ++i) {
   str[i] = std::towupper(str[i]);
}
std::wcout << str << std::endl;
// АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
  • towlower() — возвращает код символа в нижнем регистре. Если преобразования регистра не было, то код символа возвращается без изменений. Прототип функции:
#include <cwchar> /* или #include <wchar.h> */
wint_t towlower(wint_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
std::wcout << (wchar_t)std::towlower(L'W') << std::endl; // w
std::wcout << (wchar_t)std::towlower(L'Б') << std::endl; // б
wchar_t str[] = L"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
for (int i = 0, len = (int)std::wcslen(str); i < len; ++i) {
   str[i] = std::towlower(str[i]);
}
std::wcout << str << std::endl;
// абвгдеёжзийклмнопрстуфхцчшщъыьэюя
  • _wcsupr() — заменяет все буквы в L-строке str соответствующими прописными буквами. Функция возвращает указатель на строку str. Прототип функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *_wcsupr(wchar_t *str);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
_wcsupr(str);
std::wcout << str << std::endl;
// АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

Вместо функции _wcsupr() лучше использовать функцию _wcsupr_s(). Прототип функции:

#include <cwchar> /* или #include <cstring> */
errno_t _wcsupr_s(wchar_t *str, size_t sizeInWords);

В параметре sizeInWords указывается размер строки. Функция возвращает значение 0, если операция успешно выполнена, или код ошибки. Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[40] = L"абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
_wcsupr_s(str, 40);
std::wcout << str << std::endl;
// АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
  • _wcslwr() — заменяет все буквы в L-строке str соответствующими строчными буквами. Функция возвращает указатель на строку str. Прототип функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *_wcslwr(wchar_t *str);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
_wcslwr(str);
std::wcout << str << std::endl;
// абвгдеёжзийклмнопрстуфхцчшщъыьэюя

Вместо функции _wcslwr() лучше использовать функцию _wcslwr_s(). Прототип функции:

#include <cwchar> /* или #include <cstring> */
errno_t _wcslwr_s(wchar_t *str, size_t sizeInWords);

В параметре sizeInWords указывается размер строки. Функция возвращает значение 0, если операция успешно выполнена, или код ошибки. Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[40] = L"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
_wcslwr_s(str, 40);
std::wcout << str << std::endl;
// абвгдеёжзийклмнопрстуфхцчшщъыьэюя

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов