Базовый класс работы с изменяемыми строками Подробнее...
#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< fmt_type, 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< fmt_type, T... > &pattern, T &&... args) |
| Форматирует строку с помощью std::format. | |
| template<typename... T> requires (is_one_of_std_char_v<K>) | |
| Impl & | append_formatted (const FmtString< fmt_type, 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.
| pattern | - форматная строка, константная. |
| ...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 | - аргументы, передаваемые в функтор. |