Базовый класс работы с изменяемыми строками Подробнее...
#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 | - аргументы, передаваемые в функтор |