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

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

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

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

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

Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[] = "строка строка", *p = nullptr;
p = std::strrchr(str, 'к');
if (p) {
   std::cout << "Индекс: " << p - str << std::endl;
} // Индекс: 11
  • memchr() — ищет в строке str первое вхождение символа ch. Максимально просматривается maxCount символов. В качестве значения функция возвращает указатель на первый найденный символ в строке str или нулевой указатель, если символ не найден. Прототипы функции:
#include <cstring> /* или #include <string.h>
                      или #include <memory.h> */
void *memchr(void *str, int ch, size_t maxCount);
const void *memchr(const void *str, int ch, size_t maxCount);

Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[] = "строка строка", *p = nullptr;
p = (char *)std::memchr(str, 'к', std::strlen(str));
if (p) {
   std::cout << "Индекс: " << p - str << std::endl;
} // Индекс: 4
  • strpbrk() — ищет в C-строке str первое вхождение одного из символов (нулевой символ не учитывается), входящих в C-строку control. В качестве значения функция возвращает указатель на первый найденный символ или нулевой указатель, если символы не найдены. Прототипы функции:
#include <cstring> /* или #include <string.h> */
char *strpbrk(char *str, const char *control);
const char *strpbrk(const char *str, const char *control);

Пример:

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

Пример:

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

Пример:

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

Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[] = "строка строка", *p = nullptr;
p = std::strstr(str, "ока");
if (p) {
   std::cout << "Индекс: " << p - str << std::endl;
} // Индекс: 3
  • _strset() — заменяет все символы в C-строке str указанным символом ch. Функция возвращает указатель на строку str. Прототип функции:
#include <cstring> /* или #include <string.h> */
char *_strset(char *str, int ch);

Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[] = "строка";
_strset(str, '*');
std::cout << '\'' << str << '\'' << std::endl; // '******'

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

#include <cstring> /* или #include <string.h> */
errno_t _strset_s(char *str, size_t strSize, int ch);

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

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[10] = "строка";
_strset_s(str, 10, '*');
std::cout << '\'' << str << '\'' << std::endl; // '******'
  • _strnset() — заменяет первые count символов в C-строке str указанным символом ch. Функция возвращает указатель на строку str. Прототип функции:
#include <cstring> /* или #include <string.h> */
char *_strnset(char *str, int ch, size_t count);

Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[] = "строка";
_strnset(str, '*', 5);
std::cout << '\'' << str << '\'' << std::endl; // '*****а'

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

#include <cstring> /* или #include <string.h> */
errno_t _strnset_s(char *str, size_t strSize, int ch,
                   size_t count);

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

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[10] = "строка";
_strnset_s(str, 10, '*', 4);
std::cout << '\'' << str << '\'' << std::endl; // '****ка'
  • memset() — заменяет первые count элементов массива dest символом ch. В качестве значения функция возвращает указатель на массив dest. Прототип функции:
#include <cstring> /* или #include <string.h>
                      или #include <memory.h> */
void *memset(void *dest, int ch, size_t count);

Пример:

char str[] = "String";
std::memset(str, '*', 4);
std::cout << '\'' << str << '\'' << std::endl; // '****ng'
  • _strrev() — меняет порядок следования символов внутри C-строки на противоположный, как бы переворачивает строку. Функция возвращает указатель на строку str. Прототип функции:
#include <cstring> /* или #include <string.h> */
char *_strrev(char *str);

Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char str[] = "строка";
_strrev(str);
std::cout << str << std::endl; // акортс
  • _strupr() — заменяет все буквы в C-строке str соответствующими прописными буквами. Функция возвращает указатель на строку str. Прототип функции:
#include <cstring> /* или #include <string.h> */
char *_strupr(char *str);

Пример:

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

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

#include <cstring> /* или #include <string.h> */
errno_t _strupr_s(char *str, size_t strSize);

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

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

Пример:

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

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

#include <cstring> /* или #include <string.h> */
errno_t _strlwr_s(char *str, size_t strSize);

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

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

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

Помощь сайту

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

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