Базовый класс работы с изменяемыми строками Подробнее...
#include <sstring.h>
Открытые члены | |
K * | str () noexcept |
Получить указатель на буфер строки | |
operator K* () noexcept | |
Получить указатель на буфер строки | |
Impl & | trim () |
Удалить пробельные символы в начале и в конце строки | |
Impl & | trim_left () |
Удалить пробельные символы в начале строки | |
Impl & | trim_right () |
Удалить пробельные символы в конце строки | |
template<typename T, size_t N = const_lit_for<K, T>::Count> requires is_const_pattern<N> | |
Impl & | trim (T &&pattern) |
Удалить символы, входящие в строковый литерал, в начале и в конце строки. | |
template<typename T, size_t N = const_lit_for<K, T>::Count> requires is_const_pattern<N> | |
Impl & | trim_left (T &&pattern) |
Удалить символы, входящие в строковый литерал, в начале строки. | |
template<typename T, size_t N = const_lit_for<K, T>::Count> requires is_const_pattern<N> | |
Impl & | trim_right (T &&pattern) |
Удалить символы, входящие в строковый литерал, в конце строки. | |
template<typename T, size_t N = const_lit_for<K, T>::Count> requires is_const_pattern<N> | |
Impl & | trim_with_spaces (T &&pattern) |
Удалить символы, входящие в строковый литерал, а также пробельные символы, в начале и в конце строки. | |
template<typename T, size_t N = const_lit_for<K, T>::Count> requires is_const_pattern<N> | |
Impl & | trim_left_with_spaces (T &&pattern) |
Удалить символы, входящие в строковый литерал, а также пробельные символы, в начале строки. | |
template<typename T, size_t N = const_lit_for<K, T>::Count> requires is_const_pattern<N> | |
Impl & | trim_right_with_wpaces (T &&pattern) |
Удалить символы, входящие в строковый литерал, а также пробельные символы, в конце строки. | |
Impl & | trim (str_piece pattern) |
Удалить символы, входящие в переданную строку, в начале и в конце строки. | |
Impl & | trim_left (str_piece pattern) |
Удалить символы, входящие в переданную строку, в начале строки. | |
Impl & | trim_right (str_piece pattern) |
Удалить символы, входящие в переданную строку, в конце строки. | |
Impl & | trim_with_spaces (str_piece pattern) |
Удалить символы, входящие в переданную строку, а также пробельные символы, в начале и в конце строки. | |
Impl & | trim_left_with_spaces (str_piece pattern) |
Удалить символы, входящие в переданную строку, а также пробельные символы, в начале строки. | |
Impl & | trim_right_with_spaces (str_piece pattern) |
Удалить символы, входящие в переданную строку, а также пробельные символы, в конце строки. | |
Impl & | upper_only_ascii () |
Преобразовать в верхний регистр ASCII символы | |
Impl & | lower_only_ascii () |
Преобразовать в нижний регистр ASCII символы | |
Impl & | upper () |
Преобразовать в верхний регистр Unicode символы первой плоскости (<0xFFFF). | |
Impl & | lower () |
Преобразовать в нижний регистр Unicode символы первой плоскости (<0xFFFF). | |
Impl & | append (str_piece other) |
Добавить другую строку в конец строки | |
template<StrExprForType< K > A> | |
Impl & | append (const A &expr) |
Добавить строковое выражение в конец строки | |
Impl & | operator+= (str_piece other) |
Добавить другую строку в конец строки | |
template<StrExprForType< K > A> | |
Impl & | operator+= (const A &expr) |
Добавить строковое выражение в конец строки | |
Impl & | append_in (size_t pos, str_piece other) |
Добавить другую строку, начиная с заданной позиции | |
template<StrExprForType< K > A> | |
Impl & | append_in (size_t pos, const A &expr) |
Добавить строковое выражение, начиная с заданной позиции | |
Impl & | change (size_t from, size_t len, str_piece other) |
Заменить кусок строки на другую строку | |
template<StrExprForType< K > A> | |
Impl & | change (size_t from, size_t len, const A &expr) |
Заменить кусок строки на строковое выражение | |
Impl & | insert (size_t to, str_piece other) |
Вставить строку в указанную позицию | |
template<StrExprForType< K > A> | |
Impl & | insert (size_t to, const A &expr) |
Вставить строковое выражение в указанную позицию | |
Impl & | remove (size_t from, size_t len) |
Удалить часть строку | |
Impl & | prepend (str_piece other) |
Добавить другую строку в начало строки | |
template<StrExprForType< K > A> | |
Impl & | prepend (const A &expr) |
Добавить строковое выражение в начало строки | |
Impl & | replace (str_piece pattern, str_piece repl, size_t offset=0, size_t maxCount=0) |
Заменить вхождения подстроки на другую строку | |
template<StrType< K > From> | |
Impl & | replace_from (const From &f, str_piece pattern, str_piece repl, size_t offset=0, size_t maxCount=0) |
Скопировать строку-источник, заменив вхождения подстрок на другую строку | |
template<typename Op> | |
Impl & | fill (size_t from, const Op &fillFunction) |
Заполнение буфера строки с помощью функтора | |
template<typename Op> requires std::is_invocable_v<Op, K*, size_t> | |
Impl & | operator<< (const Op &fillFunction) |
Заполняет строку методом fill с нулевой позиции | |
template<typename Op> requires std::is_invocable_v<Op, K*, size_t> | |
Impl & | operator<<= (const Op &fillFunction) |
Заполняет строку методом fill после конца строки | |
template<typename Op> requires std::is_invocable_v<Op, my_type&> | |
Impl & | operator<< (const Op &fillFunction) |
Вызывает переданный функтор, передав ссылку на себя | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | printf_from (size_t from, const K *format, T &&... args) |
Добавляет отформатированный с помощью sprintf вывод, начиная с указанной позиции | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | printf (const K *format, T &&... args) |
Форматирует строку помощью sprintf. | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | append_printf (const K *format, T &&... args) |
Добавляет отформатированный с помощью sprintf вывод в конец строки | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | format_from (size_t from, const FmtString< K, T... > &format, T &&... args) |
Добавляет отформатированный с помощью std::format вывод, начиная с указанной позиции | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | vformat_from (size_t from, size_t max_write, str_piece format, T &&... args) |
Добавляет отформатированный с помощью std::vformat вывод, начиная с указанной позиции | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | format (const FmtString< K, T... > &pattern, T &&... args) |
Форматирует строку с помощью std::format. | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | append_formatted (const FmtString< K, T... > &format, T &&... args) |
Добавляет отформатированный с помощью std::format вывод в конец строки | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | vformat (str_piece format, T &&... args) |
Форматирует строку с помощью std::vformat. | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | append_vformatted (str_piece format, T &&... args) |
Добавляет отформатированный с помощью std::vformat вывод в конец строки | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | vformat_n (size_t max_write, str_piece format, T &&... args) |
Форматирует строку с помощью std::vformat не более указанного размера | |
template<typename... T> requires (is_one_of_std_char_v<K>) | |
Impl & | append_vformatted_n (size_t max_write, str_piece format, T &&... args) |
Добавляет отформатированный с помощью std::vformat вывод в конец строки, записывая не более указанного количества символов | |
template<typename Op, typename... Args> | |
Impl & | with (const Op &fillFunction, Args &&... args) |
Вызов функтора со строкой и переданными аргументами | |
Базовый класс работы с изменяемыми строками
K | - тип символов |
Impl | - конечный тип наследника |
По прежнему ничего не знает о том, где наследник хранит строку и её размер. Просто вызывает его методы для получения места, и заполняет его при необходимости. Для работы класс-наследник должен реализовать методы:
size_t length() const noexcept
- возвращает длину строкиconst K* symbols() const
- возвращает указатель на начало строкиbool is_empty() const noexcept
- проверка, не пустая ли строкаK* str() noexcept
- Неконстантный указатель на начало строкиK* set_size(size_t size)
- Изменить размер строки, как больше, так и меньше. Содержимое строки нужно оставить.K* reserve_no_preserve(size_t size)
- выделить место под строку, старую можно не сохранятьK* alloc_for_copy(size_t size)
- выделить место для копии строки заданного размера, пока не изменяя саму строку, можно вернуть текущий буфер, если место позволяет.set_from_copy(K* str, size_t size)
- присвоить строку из памяти, ранее выделенной в alloc_for_copy. Если место выделялось в текущем буфере, ничего не делать.size_t capacity() const noexcept
- вернуть текущую ёмкость строки, сколько может поместится без аллокации
|
inline |
Добавить строковое выражение в конец строки
expr | - строковое выражение |
|
inline |
Добавить другую строку в конец строки
other | - другая строка |
|
inline |
Добавляет отформатированный с помощью std::format вывод в конец строки
format | - форматная строка, константная |
...args | - аргументы для std::format |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Добавить строковое выражение, начиная с заданной позиции
pos | - позиция, с которой добавлять. Сначала строка укорачивается до заданного размера, а потом добавляется строковое выражение |
expr | - строковое выражение |
Если строка длиинееpos
, то она укорачивается до этого размера, а потом добавляется expr
.
|
inline |
Добавить другую строку, начиная с заданной позиции
pos | - позиция, с которой добавлять. Сначала строка укорачивается до заданного размера, а потом добавляется другая строка |
other | - другая строка |
Если строка длиинееpos
, то она укорачивается до этого размера, а потом добавляется other
.
|
inline |
Добавляет отформатированный с помощью sprintf вывод в конец строки
format | - форматная строка |
...args | - аргументы для sprintf |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Добавляет отформатированный с помощью std::vformat вывод в конец строки
format | - форматная строка |
... | - аргументы для std::vformat |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Добавляет отформатированный с помощью std::vformat вывод в конец строки, записывая не более указанного количества символов
max_write | - максимальное количество записываемых символов |
format | - форматная строка |
...args | - аргументы для std::vformat |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Заменить кусок строки на строковое выражение
from | - начальная позиция для замены |
len | - длина заменяемой части |
expr | - строковое выражение |
|
inline |
Заменить кусок строки на другую строку
from | - начальная позиция для замены |
len | - длина заменяемой части |
other | - строка, на которую эта часть меняется |
|
inline |
Заполнение буфера строки с помощью функтора
from | - начальная позиция для заполнения |
fillFunction | - size_t(K*, size_t) функтор, получающий адрес буфера строки и его ёмкость, возвращающий необходимый размер строки |
Функция вызывает функтор, передавая ему адрес буфера строки и его ёмкость. Функтор может изменять буфер в пределах выделенной ёмкости, и должен вернуть размер итоговой строки. Пока возвращаемый размер больше ёмкости (т.е. строка не может поместиться в буфер), выделятся память как минимум возвращенного размера, и функтор вызывается снова. До тех пор, пока возвращённый размер не будет помещаться в буфер строки. Этот размер и становится длиной строки.
|
inline |
Форматирует строку с помощью std::format.
format | - форматная строка, константная |
...args | - аргументы для std::format |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Добавляет отформатированный с помощью std::format вывод, начиная с указанной позиции
from | - начальная позиция добавления |
format | - форматная строка, константная |
...args | - аргументы для std::format |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Вставить строковое выражение в указанную позицию
to | - позиция для вставки |
expr | - строковое выражение |
|
inline |
Вставить строку в указанную позицию
to | - позиция для вставки |
other | - вставляемая строка |
|
inline |
Преобразовать в нижний регистр Unicode символы первой плоскости (<0xFFFF).
Регистр меняется упрощенными таблицами, где один code_point всегда меняется в один code_point (но для UTF-8 возможно, что длина в code unit'ах изменится).
|
inline |
Преобразовать в нижний регистр ASCII символы
|
inlineexplicitnoexcept |
Получить указатель на буфер строки
|
inline |
Добавить строковое выражение в конец строки
expr | - строковое выражение |
|
inline |
Добавить другую строку в конец строки
other | - другая строка |
|
inline |
Заполняет строку методом fill с нулевой позиции
fillFunction | - функтор заполнения строки, size_t(K*, size_t) |
|
inline |
Вызывает переданный функтор, передав ссылку на себя
fillFunction | - фуктор void(my_type&) |
|
inline |
Заполняет строку методом fill после конца строки
fillFunction | - функтор заполнения строки, size_t(K*, size_t) |
|
inline |
Добавить строковое выражение в начало строки
expr | - строковое выражение |
|
inline |
Добавить другую строку в начало строки
other | - другая строка |
|
inline |
Форматирует строку помощью sprintf.
format | - форматная строка |
...args | - аргументы для sprintf |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Добавляет отформатированный с помощью sprintf вывод, начиная с указанной позиции
from | - начальная позиция добавления |
format | - форматная строка |
...args | - аргументы для sprintf |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Удалить часть строку
from | - позиция, с которой удалить |
len | - длина удаляемой части |
|
inline |
Заменить вхождения подстроки на другую строку
pattern | - искомая подстрока |
repl | - строка замены |
offset | - начальная позиция для поиска |
maxCount | - максимальное количество замен, 0 - без ограничений |
|
inline |
Скопировать строку-источник, заменив вхождения подстрок на другую строку
f | - строка-источник |
pattern | - искомая подстрока |
repl | - строка замены |
offset | - начальная позиция для поиска |
maxCount | - максимальное количество замен, 0 - без ограничений |
|
inlinenoexcept |
Получить указатель на буфер строки
|
inline |
Удалить пробельные символы в начале и в конце строки
|
inline |
Удалить символы, входящие в переданную строку, в начале и в конце строки.
pattern | - строка, содержащая символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в строковый литерал, в начале и в конце строки.
pattern | - строковый литерал, содержащий символы, которые надо удалить. |
|
inline |
Удалить пробельные символы в начале строки
|
inline |
Удалить символы, входящие в переданную строку, в начале строки.
pattern | - строка, содержащая символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в строковый литерал, в начале строки.
pattern | - строковый литерал, содержащий символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в переданную строку, а также пробельные символы, в начале строки.
pattern | - строка, содержащая символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в строковый литерал, а также пробельные символы, в начале строки.
pattern | - строковый литерал, содержащий символы, которые надо удалить. |
|
inline |
Удалить пробельные символы в конце строки
|
inline |
Удалить символы, входящие в переданную строку, в конце строки.
pattern | - строка, содержащая символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в строковый литерал, в конце строки.
pattern | - строковый литерал, содержащий символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в переданную строку, а также пробельные символы, в конце строки.
pattern | - строка, содержащая символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в строковый литерал, а также пробельные символы, в конце строки.
pattern | - строковый литерал, содержащий символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в переданную строку, а также пробельные символы, в начале и в конце строки.
pattern | - строка, содержащая символы, которые надо удалить. |
|
inline |
Удалить символы, входящие в строковый литерал, а также пробельные символы, в начале и в конце строки.
pattern | - строковый литерал, содержащий символы, которые надо удалить. |
|
inline |
Преобразовать в верхний регистр Unicode символы первой плоскости (<0xFFFF).
Регистр меняется упрощенными таблицами, где один code_point всегда меняется в один code_point (но для UTF-8 возможно, что длина в code unit'ах изменится).
|
inline |
Преобразовать в верхний регистр ASCII символы
|
inline |
Форматирует строку с помощью std::vformat.
format | - форматная строка |
...args | - аргументы для std::vformat |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Добавляет отформатированный с помощью std::vformat вывод, начиная с указанной позиции
from | - начальная позиция добавления |
max_write | - максимальное количество записываемых символов |
format | - форматная строка |
...args | - аргументы для std::vformat |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Форматирует строку с помощью std::vformat не более указанного размера
max_write | - максимальное количество записываемых символов |
format | - форматная строка |
...args | - аргументы для std::vformat |
При необходимости автоматически увеличивает размер буфера строки
|
inline |
Вызов функтора со строкой и переданными аргументами
fillFunction | - функтор, принимающий первым параметром ссылку на строку |
...args | - аргументы, передаваемые в функтор |