simstr 1.6.1
Yet another strings library
 
Загрузка...
Поиск...
Не найдено
Пространство имен simstr::str

Небольшое пространство для методов работы со стандартными строками. Подробнее...

Функции

template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & change (std::basic_string< K, std::char_traits< K >, A > &str, size_t from, size_t count, const E &expr)
 Изменить часть стандартной строки на заданное строковое выражение.
 
template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & append (std::basic_string< K, std::char_traits< K >, A > &str, const E &expr)
 Добавить к стандартной строке строковое выражение.
 
template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & prepend (std::basic_string< K, std::char_traits< K >, A > &str, const E &expr)
 Вставить строковое выражение в начало стандартной строки.
 
template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & insert (std::basic_string< K, std::char_traits< K >, A > &str, size_t from, const E &expr)
 Вставить строковое выражение в указанную позицию стандартной строки.
 
template<typename K, typename A, StrExprForType< K > E, typename T>
requires (std::is_constructible_v<str_src<K>, T>)
std::basic_string< K, std::char_traits< K >, A > & replace (std::basic_string< K, std::char_traits< K >, A > &str, T &&pattern, const E &repl, size_t offset=0, size_t max_count=-1)
 Функция поиска подстрок в стандартной строке и замены найденных вхождений на значение строкового выражения.
 
template<typename K, typename A>
std::basic_string< K, std::char_traits< K >, A > & replace (std::basic_string< K, std::char_traits< K >, A > &str, str_src< K > pattern, str_src< K > repl, size_t offset=0, size_t max_count=-1)
 Функция поиска подстрок в стандартной строке и замены найденных вхождений на другую подстроку.
 

Подробное описание

Небольшое пространство для методов работы со стандартными строками.

Функции

◆ append()

template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & simstr::str::append ( std::basic_string< K, std::char_traits< K >, A > & str,
const E & expr )

Добавить к стандартной строке строковое выражение.

Параметры шаблона
K- тип символов.
A- тип аллокатора.
E- тип строкового выражения.
Аргументы
str- строка.
expr- строковое выражение для вставки.
Возвращает
std::basic_string<K, std::char_traits<K>, A>& - ссылку на переданную строку.

Метод получает у строкового выражения его длину, увеличивает размер строки, и материализует строковое выражение за концом строки, без использования промежуточных буферов. До C++23 используется resize, начиная с C++23 - resize_and_overwrite.

ВАЖНО!!! части строкового выражения не должны ссылаться на саму строку, иначе результат неопределён!!!

◆ change()

template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & simstr::str::change ( std::basic_string< K, std::char_traits< K >, A > & str,
size_t from,
size_t count,
const E & expr )

Изменить часть стандартной строки на заданное строковое выражение.

Параметры шаблона
K- тип символов.
A- тип аллокатора.
E- тип строкового выражения.
Аргументы
str- строка.
from- начальная позиция замены.
count- количество символов, подлежащих замене.
expr- строковое выражение для замены.
Возвращает
std::basic_string<K, std::char_traits<K>, A>& - ссылку на переданную строку.

Метод получает у строкового выражения его длину, при необходимости увеличивает размер строки, и материализует строковое выражение на нужное место, без использования промежуточных буферов. При увеличении размера строки - до C++23 используется resize, начиная с C++23 - resize_and_overwrite.

ВАЖНО!!! части строкового выражения не должны ссылаться на саму строку, иначе результат неопределён!!!

◆ insert()

template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & simstr::str::insert ( std::basic_string< K, std::char_traits< K >, A > & str,
size_t from,
const E & expr )

Вставить строковое выражение в указанную позицию стандартной строки.

Параметры шаблона
K- тип символов.
A- тип аллокатора.
E- тип строкового выражения.
Аргументы
str- строка.
from- позиция вставки.
expr- строковое выражение для вставки.
Возвращает
std::basic_string<K, std::char_traits<K>, A>& - ссылку на переданную строку.

Метод получает у строкового выражения его длину, увеличивает размер строки, сдвигает её содержимое и материализует строковое выражение на нужное место, без использования промежуточных буферов. До C++23 используется resize, начиная с C++23 - resize_and_overwrite.

ВАЖНО!!! части строкового выражения не должны ссылаться на саму строку, иначе результат неопределён!!!

◆ prepend()

template<typename K, typename A, StrExprForType< K > E>
std::basic_string< K, std::char_traits< K >, A > & simstr::str::prepend ( std::basic_string< K, std::char_traits< K >, A > & str,
const E & expr )

Вставить строковое выражение в начало стандартной строки.

Параметры шаблона
K- тип символов.
A- тип аллокатора.
E- тип строкового выражения.
Аргументы
str- строка.
expr- строковое выражение для вставки.
Возвращает
std::basic_string<K, std::char_traits<K>, A>& - ссылку на переданную строку.

Метод получает у строкового выражения его длину, увеличивает размер строки, сдвигает её содержимое и материализует строковое выражение в её начало, без использования промежуточных буферов. До C++23 используется resize, начиная с C++23 - resize_and_overwrite.

ВАЖНО!!! части строкового выражения не должны ссылаться на саму строку, иначе результат неопределён!!!

◆ replace() [1/2]

template<typename K, typename A>
std::basic_string< K, std::char_traits< K >, A > & simstr::str::replace ( std::basic_string< K, std::char_traits< K >, A > & str,
str_src< K > pattern,
str_src< K > repl,
size_t offset = 0,
size_t max_count = -1 )

Функция поиска подстрок в стандартной строке и замены найденных вхождений на другую подстроку.

Параметры шаблона
K- тип символов строки.
A- тип аллокатора строки.
Аргументы
str- строка, в которой заменяем вхождения подстрок.
pattern- искомая подстрока (любой тип, конвертирующийся в simple_str).
repl- строка для замены (любой тип, конвертирующийся в simple_str).
offset- начальное смещение для поиска.
max_count- максимальное количество замен.
Возвращает
std::basic_string<K, std::char_traits<K>, A>& - ссылку на модифицируемую строку.

◆ replace() [2/2]

template<typename K, typename A, StrExprForType< K > E, typename T>
requires (std::is_constructible_v<str_src<K>, T>)
std::basic_string< K, std::char_traits< K >, A > & simstr::str::replace ( std::basic_string< K, std::char_traits< K >, A > & str,
T && pattern,
const E & repl,
size_t offset = 0,
size_t max_count = -1 )

Функция поиска подстрок в стандартной строке и замены найденных вхождений на значение строкового выражения.

Параметры шаблона
K- тип символов строки.
A- тип аллокатора строки.
E- тип строкового выражения.
T- тип подстроки поиска.
Аргументы
str- строка, в которой заменяем вхождения подстрок.
pattern- искомая подстрока (любой тип, конвертирующийся в simple_str).
repl- строковое выражение для замены.
offset- начальное смещение для поиска.
max_count- максимальное количество замен.
Возвращает
std::basic_string<K, std::char_traits<K>, A>& - ссылку на модифицируемую строку.

Части строкового выражения не должны ссылаться на саму модифицируемую строку. Если искомая подстрока не найдена, то строковое выражение даже не вычисляется. Затем при осуществлении замены строковое выражение вычисляется только один раз в место первой замены, а в следующие места замен просто копируется символы из первого места. Это позволяет экономить память и время, если вам надо сделать замену на какую-либо "сборную" строку.