Поиск и замена в L-строке

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

  • wcschr() — ищет в L-строке str первое вхождение символа ch. В качестве значения функция возвращает указатель на первый найденный символ в L-строке str или нулевой указатель, если символ не найден. Прототипы функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *wcschr(wchar_t *str, wchar_t ch);
const wchar_t *wcschr(const wchar_t *str, wchar_t ch);

Пример использования функции:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка", *p = nullptr;
p = std::wcschr(str, L'к');
if (p) {
   std::wcout << L"Индекс: " << p - str << std::endl;
} // Индекс: 4
  • wcsrchr() — ищет в L-строке str последнее вхождение символа ch. В качестве значения функция возвращает указатель на символ или нулевой указатель, если символ не найден. Прототипы функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *wcsrchr(wchar_t *str, wchar_t ch);
const wchar_t *wcsrchr(const wchar_t *str, wchar_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка", *p = nullptr;
p = std::wcsrchr(str, L'к');
if (p) {
   std::wcout << L"Индекс: " << p - str << std::endl;
} // Индекс: 11
  • wmemchr() — ищет в L-строке str первое вхождение символа ch. Максимально просматривается maxCount символов. В качестве значения функция возвращает указатель на первый найденный символ в строке str или нулевой указатель, если символ не найден. Прототипы функции:
#include <cwchar>
wchar_t *wmemchr(wchar_t *str, wchar_t ch,
                 size_t maxCount);
const wchar_t *wmemchr(const wchar_t *str, wchar_t ch,
                       size_t maxCount);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка", *p = nullptr;
p = std::wmemchr(str, L'к', std::wcslen(str));
if (p) {
   std::wcout << L"Индекс: " << p - str << std::endl;
} // Индекс: 4
  • wcspbrk() — ищет в L-строке str первое вхождение одного из символов (нулевой символ не учитывается), входящих в L-строку control. В качестве значения функция возвращает указатель на первый найденный символ или нулевой указатель, если символы не найдены. Прототипы функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *wcspbrk(wchar_t *str, const wchar_t *control);
const wchar_t *wcspbrk(const wchar_t *str,
                       const wchar_t *control);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка", *p = nullptr;
p = std::wcspbrk(str, L"кр");
if (p) {
   std::wcout << L"Индекс: " << p - str << std::endl;
} // Индекс: 2 (индекс первой буквы "р")
  • wcscspn() — возвращает индекс первого символа в L-строке str, который совпадает с одним из символов, входящих в L-строку control. Прототип функции:
#include <cwchar> /* или #include <cstring> */
size_t wcscspn(const wchar_t *str, const wchar_t *control);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка";
size_t index = std::wcscspn(str, L"кр");
std::wcout << L"Индекс: " << index << std::endl;
// Индекс: 2 (индекс первой буквы "р")
index = std::wcscspn(str, L"ф");
std::wcout << L"Индекс: " << index << std::endl;
// Индекс: 13 (длина строки, если ничего не найдено)
  • wcsspn() — возвращает индекс первого символа в L-строке str, который не совпадает ни с одним из символов, входящих в L-строку control. Прототип функции:
#include <cwchar> /* или #include <cstring> */
size_t wcsspn(const wchar_t *str, const wchar_t *control);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка";
size_t index = std::wcsspn(str, L"окстр");
std::wcout << L"Индекс: " << index << std::endl;
// Индекс: 5 ("а" не входит в "окстр")
  • wcsstr() — ищет в L-строке str первое вхождение целого фрагмента из L-строки subStr. В качестве значения функция возвращает указатель на первое вхождение фрагмента в строку или нулевой указатель — в противном случае. Прототипы функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *wcsstr(wchar_t *str, const wchar_t *subStr);
const wchar_t *wcsstr(const wchar_t *str, const wchar_t *subStr);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка строка", *p = nullptr;
p = std::wcsstr(str, L"ока");
if (p) {
   std::wcout << L"Индекс: " << p - str << std::endl;
} // Индекс: 3
  • _wcsset() — заменяет все символы в L-строке str указанным символом ch. Функция возвращает указатель на строку str. Прототип функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *_wcsset(wchar_t *str, wchar_t ch);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка";
_wcsset(str, L'*');
std::wcout << L'\'' << str << L'\'' << std::endl; // '******'

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

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

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

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[10] = L"строка";
_wcsset_s(str, 10, L'*');
std::wcout << L'\'' << str << L'\'' << std::endl; // '******'
  • _wcsnset() — заменяет первые count символов в L-строке str указанным символом ch. Функция возвращает указатель на строку str. Прототип функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *_wcsnset(wchar_t *str, wchar_t ch, size_t count);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка";
_wcsnset(str, L'*', 4);
std::wcout << L'\'' << str << L'\'' << std::endl; // '****ка'

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

#include <cwchar> /* или #include <cstring> */
errno_t _wcsnset_s(wchar_t *str, size_t strSizeInWords,
                   wchar_t ch, size_t count);

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

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[10] = L"строка";
_wcsnset_s(str, 10, L'*', 4);
std::wcout << L'\'' << str << L'\'' << std::endl; // '****ка'
  • wmemset() — заменяет первые count элементов массива dest символом ch. В качестве значения функция возвращает указатель на массив dest. Прототип функции:
#include <cwchar>
wchar_t *wmemset(wchar_t *dest, wchar_t ch, size_t count);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка";
std::wmemset(str, L'*', 4);
std::wcout << L'\'' << str << L'\'' << std::endl; // '****ка'
  • _wcsrev() — меняет порядок следования символов внутри L-строки на противоположный, как бы переворачивает строку. Функция возвращает указатель на строку str. Прототип функции:
#include <cwchar> /* или #include <cstring> */
wchar_t *_wcsrev(wchar_t *str);

Пример:

_wsetlocale(LC_ALL, L"Russian_Russia.1251");
wchar_t str[] = L"строка";
_wcsrev(str);
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
Скриншот реквизитов