simstr 1.0
Yet another strings library
 
Загрузка...
Поиск...
Не найдено
Шаблон класса simstr::sstring< K, Allocator >

Класс иммутабельной владеющей строки Подробнее...

#include <sstring.h>

Граф наследования:simstr::sstring< K, Allocator >:
simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, false > simstr::str_storable< K, sstring< K, allocator_string >, allocator_string > simstr::from_utf_convertable< K, sstring< K, allocator_string > >

Открытые члены

template<typename... Args>
requires (sizeof...(Args) > 0 && std::is_constructible_v<Allocator, Args...>)
 sstring (Args &&... args)
 Конструктор пустой строки
 
 ~sstring ()
 Деструктор строки
 
 sstring (const my_type &other) noexcept
 Конструктор копирования строки
 
 sstring (my_type &&other) noexcept
 Конструктор перемещения
 
template<size_t N>
 sstring (lstring< K, N, true, Allocator > &&src)
 Конструктор перемещения из lstring с совместимым с sstring внешним буфером
 
template<typename T, size_t N = const_lit_for<K, T>::Count, typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
 sstring (T &&s, Args &&... args)
 Инициализация из строкового литерала
 
my_typeoperator= (my_type other) noexcept
 Оператор присвоения другой строки того же типа
 
my_typeoperator= (simple_str< K > other)
 Оператор присвоения другой строки другого типа
 
template<typename T, size_t N = const_lit_for<K, T>::Count>
my_typeoperator= (T &&other)
 Оператор присвоения строкового литерала
 
template<size_t N, bool forShared, typename A>
my_typeoperator= (const lstring< K, N, forShared, A > &other)
 Оператор присвоения другой строки типа lstring.
 
template<size_t N>
my_typeoperator= (lstring< K, N, true, Allocator > &&other)
 Оператор присвоения перемещаемой строки типа lstring с совместимым буфером
 
my_typeoperator= (const StrExprForType< K > auto &expr)
 Оператор присвоения строкового выражения
 
my_typemake_empty () noexcept
 Сделать строку пустой
 
const K * symbols () const noexcept
 Указатель на символы строки
 
size_t length () const noexcept
 Длина строки
 
bool is_empty () const noexcept
 Пустая ли строка
 
bool empty () const noexcept
 for std::string compatibility
 
constexpr K * place (K *ptr) const noexcept
 Копировать строку в указанный буфер.
 
void copy_to (K *buffer, size_t bufSize)
 Копировать строку в указанный буфер.
 
size_t size () const
 Размер строки в символах.
 
constexpr operator str_piece () const noexcept
 Преобразовать себя в "кусок строки", включающий всю строку
 
str_piece to_str () const noexcept
 Преобразовать себя в "кусок строки", включающий всю строку
 
std::string_view to_sv () const noexcept
 Конвертировать в std::string_view.
 
std::string to_string () const noexcept
 Конвертировать в std::string.
 
constexpr str_piece operator() (ptrdiff_t from, ptrdiff_t len=0) const noexcept
 Получить часть строки как "simple_str".
 
constexpr str_piece mid (size_t from, size_t len=-1) const noexcept
 Получить часть строки как "кусок строки".
 
constexpr str_piece from_to (size_t from, size_t to) const noexcept
 Получить подстроку simple_str с позиции от from до позиции to (не включая её)
 
bool operator! () const noexcept
 Проверка на пустоту
 
at (ptrdiff_t idx) const
 Получить символ на заданной позиции
 
constexpr int compare (str_piece o) const
 Сравнение строк посимвольно
 
constexpr int strcmp (const K *text) const
 Сравнение с C-строкой посимвольно
 
constexpr bool equal (str_piece other) const noexcept
 Сравнение строк на равенство
 
constexpr bool operator== (const base &other) const noexcept
 Оператор сравнение строк на равенство
 
bool operator== (T &&other) const noexcept
 Оператор сравнения строки и строкового литерала на равенство
 
constexpr auto operator<=> (const base &other) const noexcept
 Оператор сравнения строк
 
auto operator<=> (T &&other) const noexcept
 Оператор сравнения строки и строкового литерала
 
int compare_ia (str_piece text) const noexcept
 Сравнение строк посимвольно без учёта регистра ASCII символов
 
bool equal_ia (str_piece text) const noexcept
 Равна ли строка другой строке посимвольно без учёта регистра ASCII символов
 
bool less_ia (str_piece text) const noexcept
 Меньше ли строка другой строки посимвольно без учёта регистра ASCII символов
 
int compare_iu (str_piece text) const noexcept
 Сравнение строк посимвольно без учёта регистра Unicode символов первой плоскости (<0xFFFF)
 
bool equal_iu (str_piece text) const noexcept
 Равна ли строка другой строке посимвольно без учёта регистра Unicode символов первой плоскости (<0xFFFF)
 
bool less_iu (str_piece text) const noexcept
 Меньше ли строка другой строки посимвольно без учёта регистра Unicode символов первой плоскости (<0xFFFF)
 
size_t find (str_piece pattern, size_t offset=0) const noexcept
 Найти начало первого вхождения подстроки в этой строке.
 
size_t find (K s, size_t offset=0) const noexcept
 Найти символ в этой строке.
 
size_t find_or_throw (str_piece pattern, size_t offset=0, Args &&... args) const noexcept
 Найти начало первого вхождения подстроки в этой строке или выкинуть исключение.
 
size_t find_end (str_piece pattern, size_t offset=0) const noexcept
 Найти конец вхождения подстроки в этой строке.
 
size_t find_or_all (str_piece pattern, size_t offset=0) const noexcept
 Найти начало первого вхождения подстроки в этой строке или конец строки.
 
size_t find_or_all (K s, size_t offset=0) const noexcept
 Найти символ в этой строке или конец строки.
 
size_t find_end_or_all (str_piece pattern, size_t offset=0) const noexcept
 Найти конец первого вхождения подстроки в этой строке или конец строки.
 
size_t find_last (str_piece pattern, size_t offset=-1) const noexcept
 Найти начало последнего вхождения подстроки в этой строке.
 
size_t find_last (K s, size_t offset=-1) const noexcept
 Найти последнее вхождения символа в этой строке
 
size_t find_end_of_last (str_piece pattern, size_t offset=-1) const noexcept
 Найти конец последнего вхождения подстроки в этой строке.
 
size_t find_last_or_all (str_piece pattern, size_t offset=-1) const noexcept
 Найти начало последнего вхождения подстроки в этой строке или конец строки.
 
size_t find_end_of_last_or_all (str_piece pattern, size_t offset=-1) const noexcept
 Найти конец последнего вхождения подстроки в этой строке или конец строки.
 
bool contains (str_piece pattern, size_t offset=0) const noexcept
 Содержит ли строка указанную подстроку.
 
void for_all_finded (const Op &op, str_piece pattern, size_t offset=0, size_t maxCount=0) const
 Вызвать функтор для всех найденных вхождений подстроки в этой строке
 
std::vector< size_t > find_all (str_piece pattern, size_t offset=0, size_t maxCount=0) const
 Найти все вхождения подстроки в этой строке
 
size_t find_first_of (str_piece pattern, size_t offset=0) const noexcept
 Найти первое вхождение символа из заданного набора символов
 
std::pair< size_t, size_t > find_first_of_idx (str_piece pattern, size_t offset=0) const noexcept
 Найти первое вхождение символа из заданного набора символов
 
size_t find_first_not_of (str_piece pattern, size_t offset=0) const noexcept
 Найти первое вхождение символа не из заданного набора символов
 
size_t find_last_of (str_piece pattern, size_t offset=str::npos) const noexcept
 Найти последнее вхождение символа из заданного набора символов
 
std::pair< size_t, size_t > find_last_of_idx (str_piece pattern, size_t offset=str::npos) const noexcept
 Найти последнее вхождение символа из заданного набора символов
 
size_t find_last_not_of (str_piece pattern, size_t offset=str::npos) const noexcept
 Найти последнее вхождение символа не из заданного набора символов
 
my_type substr (ptrdiff_t from, ptrdiff_t len=0) const
 Получить подстроку. Работает аналогично operator(), только результат выдает того же типа, к которому применён метод
 
my_type str_mid (size_t from, size_t len=-1) const
 Получить часть строки объектом того же типа, к которому применён метод, аналогично mid.
 
as_int () const noexcept
 Преобразовать строку в число заданного типа
 
std::tuple< T, IntConvertResult, size_t > to_int () const noexcept
 Преобразовать строку в число заданного типа
 
double to_double () const noexcept
 Преобразовать строку в double.
 
void as_number (T &t)
 Преобразовать строку в целое число
 
void as_number (double &t)
 Преобразовать строку в double.
 
splitf (str_piece delimeter, const Op &beforeFunc, size_t offset=0) const
 Разделить строку на части по заданному разделителю, с возможным применением функтора к каждой подстроке
 
split (str_piece delimeter, size_t offset=0) const
 Разделить строку на подстроки по заданному разделителю
 
Splitter< K > splitter (str_piece delimeter) const
 Получить объект Splitter по заданному разделителю, который позволяет последовательно получать подстроки методом next(), пока is_done() false.
 
constexpr bool starts_with (str_piece prefix) const noexcept
 Начинается ли строка с заданной подстроки
 
constexpr bool starts_with_ia (str_piece prefix) const noexcept
 Начинается ли строка с заданной подстроки без учёта регистра ASCII символов
 
bool starts_with_iu (str_piece prefix) const noexcept
 Начинается ли строка с заданной подстроки без учёта регистра Unicode символов первой плоскости (<0xFFFF)
 
constexpr bool prefix_in (str_piece text) const noexcept
 Является ли эта строка началом другой строки
 
constexpr bool ends_with (str_piece suffix) const noexcept
 Заканчивается ли строка указанной подстрокой
 
constexpr bool ends_with_ia (str_piece suffix) const noexcept
 Заканчивается ли строка указанной подстрокой без учёта регистра ASCII символов
 
constexpr bool ends_with_iu (str_piece suffix) const noexcept
 Заканчивается ли строка указанной подстрокой без учёта регистра Unicode символов первой плоскости (<0xFFFF)
 
bool is_ascii () const noexcept
 Содержит ли строка только ASCII символы
 
uppered_only_ascii () const
 Получить копию строки в верхнем регистре ASCII символов
 
lowered_only_ascii () const
 Получить копию строки в нижнем регистре ASCII символов
 
uppered () const
 Получить копию строки в верхнем регистре Unicode символов первой плоскости (<0xFFFF)
 
lowered () const
 Получить копию строки в нижнем регистре Unicode символов первой плоскости (<0xFFFF)
 
replaced (str_piece pattern, str_piece repl, size_t offset=0, size_t maxCount=0) const
 Получить копию строки с заменёнными вхождениями подстрок
 
expr_replaces< K, N - 1, L - 1 > replace_init (T &&pattern, M &&repl) const
 Получить строковое выражение, которое выдает строку с заменёнными подстроками, заданными строковыми литералами.
 
trimmed () const
 Получить строку с удалением пробельных символов слева и справа
 
trimmed (T &&pattern) const
 Получить строку с удалением символов, заданных строковым литералом, слева и справа
 
trimmed (str_piece pattern) const
 Получить строку с удалением символов, заданных другой строкой, слева и справа
 
trimmed_left () const
 Получить строку с удалением пробельных символов слева
 
trimmed_left (T &&pattern) const
 Получить строку с удалением символов, заданных строковым литералом, слева
 
trimmed_left (str_piece pattern) const
 Получить строку с удалением символов, заданных другой строкой, слева
 
trimmed_right () const
 Получить строку с удалением пробельных символов справа
 
trimmed_right (T &&pattern) const
 Получить строку с удалением символов, заданных строковым литералом, справа
 
trimmed_right (str_piece pattern) const
 Получить строку с удалением символов, заданных другой строкой, справа
 
trimmed_with_spaces (T &&pattern) const
 Получить строку с удалением символов, заданных строковым литералом, а также пробельных символов, слева и справа
 
trimmed_with_spaces (str_piece pattern) const
 Получить строку с удалением символов, заданных другой строкой, а также пробельных символов, слева и справа
 
trimmed_left_with_spaces (T &&pattern) const
 Получить строку с удалением символов, заданных строковым литералом, а также пробельных символов, слева
 
trimmed_left_with_spaces (str_piece pattern) const
 Получить строку с удалением символов, заданных другой строкой, а также пробельных символов, слева
 
trimmed_right_with_spaces (T &&pattern) const
 Получить строку с удалением символов, заданных строковым литералом, а также пробельных символов, справа
 
trimmed_right_with_spaces (str_piece pattern) const
 Получить строку с удалением символов, заданных другой строкой, а также пробельных символов, справа
 
 operator const K * () const noexcept
 Оператор преобразования в нуль-терминированную C-строку
 
s_str_nt to_nts (size_t from=0) const
 Получить simple_str_nt, начиная с заданного символа
 
 operator s_str_nt () const
 Преобразовать в simple_str_nt.
 

Открытые статические члены

template<typename... T>
static my_type printf (const K *pattern, T &&... args)
 Получить строку, отформатированную с помощью std::sprintf
 
template<typename... T>
static my_type format (const FmtString< K, T... > &fmtString, T &&... args)
 Получить строку, отформатированную с помощью std::format
 
template<typename... T>
static my_type vformat (simple_str< K > fmtString, T &&... args)
 Получить строку, отформатированную с помощью std::vformat
 
static my_type join (const T &strings, s_str delimeter, bool tail=false, bool skip_empty=false, Args &&... args)
 Конкатенация строк из контейнера в одну строку
 
static my_type uppered_only_ascii_from (const From &f, Args &&... args)
 Создать строку, копию переданной в верхнем регистре символов ASCII.
 
static my_type lowered_only_ascii_from (const From &f, Args &&... args)
 Создать копию переданной строки в нижнем регистре символов ASCII.
 
static my_type uppered_from (const From &f, Args &&... args)
 Создать копию переданной строки в верхнем регистре символов Unicode первой плоскости (<0xFFFF)
 
static my_type lowered_from (const From &f, Args &&... args)
 Создать копию переданной строки в нижнем регистре символов Unicode первой плоскости (<0xFFFF)
 
static my_type replaced_from (const From &f, s_str pattern, s_str repl, size_t offset=0, size_t maxCount=0, Args &&... args)
 Создать копию переданной строки с заменой подстрок
 

Защищенные члены

allocator_t & allocator ()
 Получить аллокатор
 

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

template<typename K, Allocatorable Allocator = allocator_string>
class simstr::sstring< K, Allocator >

Класс иммутабельной владеющей строки

Параметры шаблона
K- тип символов
Allocator- тип аллокатора

"shared" строка. Класс с small string optimization плюс разделяемый иммутабельный буфер строки. Так как буфер строки в этом классе иммутабельный, то: Во-первых, нет нужды хранить размер выделенного буфера, мы его всё-равно не будем изменять. Во-вторых, появляется ещё один тип строки - строка, инициализированная строковым литералом. Для неё просто сохраняем указатель на символы, и не считаем ссылки. Таким образом, инициализация строкового объекта в программе литералом - ничего никуда не копирует - ни в себя, ни в динамическую память, и не стоит дороже по сравнению с инициализацией сырого указателя на строку, и даже ещё оптимальнее, так как ещё и сразу подставляет размер, а не вычисляет его в рантайме.

stringa text = "text or very very very long text"; // ничего не стоит!
stringa copy = anotherString; // Стоит только копирование байтов самого объекта плюс возможно один атомарный инкремент

В случае разделяемого буфера размер строки всё-равно храним не в общем буфере, а в каждом объекте. Из-за SSO места всё-равно хватает, а в память лезть за длиной придётся меньше. Например, подсчитать сумму длин строк в векторе - пройдётся только по памяти в векторе.

Размеры для x64:

  • для u8s - 24 байта, хранит строки до 23 символов + 0
  • для u16s - 32 байта, хранит строки до 15 символов + 0
  • для u32s - 32 байта, хранит строки до 7 символов + 0

Конструктор(ы)

◆ sstring() [1/5]

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... Args>
requires (sizeof...(Args) > 0 && std::is_constructible_v<Allocator, Args...>)
simstr::sstring< K, Allocator >::sstring ( Args &&... args)
inline

Конструктор пустой строки

Аргументы
...args- параметры для инициализации аллокатора

◆ sstring() [2/5]

template<typename K, Allocatorable Allocator = allocator_string>
simstr::sstring< K, Allocator >::sstring ( const my_type & other)
inlinenoexcept

Конструктор копирования строки

Аргументы
other- копируемая строка

◆ sstring() [3/5]

template<typename K, Allocatorable Allocator = allocator_string>
simstr::sstring< K, Allocator >::sstring ( my_type && other)
inlinenoexcept

Конструктор перемещения

Аргументы
other- перемещаемая строка

◆ sstring() [4/5]

template<typename K, Allocatorable Allocator = allocator_string>
template<size_t N>
simstr::sstring< K, Allocator >::sstring ( lstring< K, N, true, Allocator > && src)
inline

Конструктор перемещения из lstring с совместимым с sstring внешним буфером

Аргументы
src- перемещаемая строка

В случае, если символы в lstring лежат во внешнем аллоцированном буфере, просто забираем указатель на буфер, он нам подойдёт.

◆ sstring() [5/5]

template<typename K, Allocatorable Allocator = allocator_string>
template<typename T, size_t N = const_lit_for<K, T>::Count, typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
simstr::sstring< K, Allocator >::sstring ( T && s,
Args &&... args )
inline

Инициализация из строкового литерала

Аргументы
s- строковый литерал
...args- параметры для инициализации аллокатора

В этом случае просто запоминаем указатель на строку и её длину.

Методы

◆ as_int()

T simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::as_int ( ) const
inlinenoexceptinherited

Преобразовать строку в число заданного типа

Параметры шаблона
T- желаемый тип числа
CheckOverflow- проверять на переполнение
Base- основание счисления числа, от -1 до 36, кроме 1.
  • Если 0: то пытается определить основание по префиксу 0[xX] как 16, 0 как 8, иначе 10
  • Если -1: то пытается определить основание по префиксам:
    • 0 или 0[oO]: 8
    • 0[bB]: 2
    • 0[xX]: 16
    • в остальных случаях 10.
SkipWs- пропускать пробельные символы в начале строки
AllowSign- допустим ли знак '+' перед числом
Возвращает
T - число, результат преобразования, насколько оно получилось, или 0 при переполнении.

◆ as_number() [1/2]

void simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::as_number ( double & t)
inlineinherited

Преобразовать строку в double.

Аргументы
t- переменная, в которую записывается результат

◆ as_number() [2/2]

void simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::as_number ( T & t)
inlineinherited

Преобразовать строку в целое число

Параметры шаблона
T- тип числа, выводится из аргумента
Аргументы
t- переменная, в которую записывается результат

◆ at()

K simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::at ( ptrdiff_t idx) const
inlineinherited

Получить символ на заданной позиции

Аргументы
idx- индекс символа. Для отрицательных значений отсчитывается от конца строки.
Возвращает
K - символ

Не производит проверку на выход за границы строки

◆ compare()

int simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::compare ( str_piece o) const
inlineconstexprinherited

Сравнение строк посимвольно

Аргументы
o- другая строка
Возвращает
<0 эта строка меньше, ==0 - строки равны, >0 - эта строка больше

◆ compare_ia()

int simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::compare_ia ( str_piece text) const
inlinenoexceptinherited

Сравнение строк посимвольно без учёта регистра ASCII символов

Аргументы
text- другая строка
Возвращает
<0 эта строка меньше, ==0 - строки равны, >0 - эта строка больше

◆ compare_iu()

int simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::compare_iu ( str_piece text) const
inlinenoexceptinherited

Сравнение строк посимвольно без учёта регистра Unicode символов первой плоскости (<0xFFFF)

Аргументы
text- другая строка
Возвращает
<0 эта строка меньше, ==0 - строки равны, >0 - эта строка больше

◆ contains()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::contains ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Содержит ли строка указанную подстроку.

Аргументы
pattern- искомая строка
offset- с какой позиции начинать поиск
Возвращает
bool

◆ copy_to()

void simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::copy_to ( K * buffer,
size_t bufSize )
inlineinherited

Копировать строку в указанный буфер.

Метод добавляет \0 после скопированных символов. Не выходит за границы буфера.

Аргументы
buffer- указатель на буфер
bufSize- размер буфера в символах.

◆ ends_with()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::ends_with ( str_piece suffix) const
inlineconstexprnoexceptinherited

Заканчивается ли строка указанной подстрокой

Аргументы
suffix- подстрока

◆ ends_with_ia()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::ends_with_ia ( str_piece suffix) const
inlineconstexprnoexceptinherited

Заканчивается ли строка указанной подстрокой без учёта регистра ASCII символов

Аргументы
suffix- подстрока

◆ ends_with_iu()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::ends_with_iu ( str_piece suffix) const
inlineconstexprnoexceptinherited

Заканчивается ли строка указанной подстрокой без учёта регистра Unicode символов первой плоскости (<0xFFFF)

Аргументы
suffix- подстрока

◆ equal()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::equal ( str_piece other) const
inlineconstexprnoexceptinherited

Сравнение строк на равенство

Аргументы
other- другая строка
Возвращает
равны ли строки

◆ equal_ia()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::equal_ia ( str_piece text) const
inlinenoexceptinherited

Равна ли строка другой строке посимвольно без учёта регистра ASCII символов

Аргументы
text- другая строка
Возвращает
равны ли строки

◆ equal_iu()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::equal_iu ( str_piece text) const
inlinenoexceptinherited

Равна ли строка другой строке посимвольно без учёта регистра Unicode символов первой плоскости (<0xFFFF)

Аргументы
text- другая строка
Возвращает
равны ли строки

◆ find() [1/2]

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find ( K s,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти символ в этой строке.

Аргументы
s- искомый символ
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию найденного символа, или -1, если не найден

◆ find() [2/2]

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти начало первого вхождения подстроки в этой строке.

Аргументы
pattern- искомая строка
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию начала вхождения подстроки, или -1, если не найдена

◆ find_all()

std::vector< size_t > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_all ( str_piece pattern,
size_t offset = 0,
size_t maxCount = 0 ) const
inlineinherited

Найти все вхождения подстроки в этой строке

Аргументы
pattern- искомая подстрока
offset- позиция начала поиска
maxCount- максимальное количество обрабатываемых вхождений, 0 - без ограничений
Возвращает
std::vector<size_t> - вектор с позициями начал найденных вхождений

◆ find_end()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_end ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти конец вхождения подстроки в этой строке.

Аргументы
pattern- искомая строка
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию сразу за вхождением подстроки, или -1, если не найдена

◆ find_end_of_last()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_end_of_last ( str_piece pattern,
size_t offset = -1 ) const
inlinenoexceptinherited

Найти конец последнего вхождения подстроки в этой строке.

Аргументы
pattern- искомая строка
offset- c какой позиции вести поиск в обратную сторону, -1 - с самого конца
Возвращает
size_t - позицию сразу за последним вхождением подстроки, или -1, если не найдена

◆ find_end_of_last_or_all()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_end_of_last_or_all ( str_piece pattern,
size_t offset = -1 ) const
inlinenoexceptinherited

Найти конец последнего вхождения подстроки в этой строке или конец строки.

Аргументы
pattern- искомая строка
offset- c какой позиции вести поиск в обратную сторону, -1 - с самого конца
Возвращает
size_t - позицию сразу за последним вхождением подстроки, или длину строки, если не найдена

◆ find_end_or_all()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_end_or_all ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти конец первого вхождения подстроки в этой строке или конец строки.

Аргументы
pattern- искомая строка
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию сразу за вхождением подстроки, или длину строки, если не найдена

◆ find_first_not_of()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_first_not_of ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти первое вхождение символа не из заданного набора символов

Аргументы
pattern- строка, задающая набор символов
offset- позиция начала поиска
Возвращает
size_t - позицию найденного вхождения, или -1, если не найден

◆ find_first_of()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_first_of ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти первое вхождение символа из заданного набора символов

Аргументы
pattern- строка, задающая набор искомых символов
offset- позиция начала поиска
Возвращает
size_t - позицию найденного вхождения, или -1, если не найден

◆ find_first_of_idx()

std::pair< size_t, size_t > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_first_of_idx ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти первое вхождение символа из заданного набора символов

Аргументы
pattern- строка, задающая набор искомых символов
offset- позиция начала поиска
Возвращает
std::pair<size_t, size_t> - пару из позиции найденного вхождения и номера найденного символа в наборе, или -1, если не найден

◆ find_last() [1/2]

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_last ( K s,
size_t offset = -1 ) const
inlinenoexceptinherited

Найти последнее вхождения символа в этой строке

Аргументы
s- искомый символ
offset- c какой позиции вести поиск в обратную сторону, -1 - с самого конца
Возвращает
size_t - позицию найденного символа, или -1, если не найден

◆ find_last() [2/2]

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_last ( str_piece pattern,
size_t offset = -1 ) const
inlinenoexceptinherited

Найти начало последнего вхождения подстроки в этой строке.

Аргументы
pattern- искомая строка
offset- c какой позиции вести поиск в обратную сторону, -1 - с самого конца
Возвращает
size_t - позицию начала вхождения подстроки, или -1, если не найдена

◆ find_last_not_of()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_last_not_of ( str_piece pattern,
size_t offset = str::npos ) const
inlinenoexceptinherited

Найти последнее вхождение символа не из заданного набора символов

Аргументы
pattern- строка, задающая набор символов
offset- позиция начала поиска
Возвращает
size_t - позицию найденного вхождения, или -1, если не найден

◆ find_last_of()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_last_of ( str_piece pattern,
size_t offset = str::npos ) const
inlinenoexceptinherited

Найти последнее вхождение символа из заданного набора символов

Аргументы
pattern- строка, задающая набор искомых символов
offset- позиция начала поиска
Возвращает
size_t - позицию найденного вхождения, или -1, если не найден

◆ find_last_of_idx()

std::pair< size_t, size_t > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_last_of_idx ( str_piece pattern,
size_t offset = str::npos ) const
inlinenoexceptinherited

Найти последнее вхождение символа из заданного набора символов

Аргументы
pattern- строка, задающая набор искомых символов
offset- позиция начала поиска
Возвращает
std::pair<size_t, size_t> - пару из позиции найденного вхождения и номера найденного символа в наборе, или -1, если не найден

◆ find_last_or_all()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_last_or_all ( str_piece pattern,
size_t offset = -1 ) const
inlinenoexceptinherited

Найти начало последнего вхождения подстроки в этой строке или конец строки.

Аргументы
pattern- искомая строка
offset- c какой позиции вести поиск в обратную сторону, -1 - с самого конца
Возвращает
size_t - позицию начала вхождения подстроки, или длину строки, если не найдена

◆ find_or_all() [1/2]

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_or_all ( K s,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти символ в этой строке или конец строки.

Аргументы
s- искомый символ
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию найденного символа, или длину строки, если не найден

◆ find_or_all() [2/2]

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_or_all ( str_piece pattern,
size_t offset = 0 ) const
inlinenoexceptinherited

Найти начало первого вхождения подстроки в этой строке или конец строки.

Аргументы
pattern- искомая строка
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию начала вхождения подстроки, или длину строки, если не найдена

◆ find_or_throw()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::find_or_throw ( str_piece pattern,
size_t offset = 0,
Args &&... args ) const
inlinenoexceptinherited

Найти начало первого вхождения подстроки в этой строке или выкинуть исключение.

Параметры шаблона
Exc- тип исключения
Args...- типы параметров для конструирования исключения, выводятся из аргументов
Аргументы
pattern- искомая строка
offset- с какой позиции начинать поиск
Возвращает
size_t - позицию начала вхождения подстроки, или выбрасывает исключение Exc, если не найдена

◆ for_all_finded()

void simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::for_all_finded ( const Op & op,
str_piece pattern,
size_t offset = 0,
size_t maxCount = 0 ) const
inlineinherited

Вызвать функтор для всех найденных вхождений подстроки в этой строке

Аргументы
op- функтор, принимающий строку
pattern- искомая подстрока
offset- позиция начала поиска
maxCount- максимальное количество обрабатываемых вхождений, 0 - без ограничений

◆ format()

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... T>
static my_type simstr::sstring< K, Allocator >::format ( const FmtString< K, T... > & fmtString,
T &&... args )
inlinestatic

Получить строку, отформатированную с помощью std::format

Аргументы
pattern- константная форматная строка
...args- аргументы для std::format
Возвращает
my_type

◆ from_to()

str_piece simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::from_to ( size_t from,
size_t to ) const
inlineconstexprnoexceptinherited

Получить подстроку simple_str с позиции от from до позиции to (не включая её)

Для производительности метод никак не проверяет выходы за границы строки, используйте в сценариях, когда точно знаете, что это позиции внутри строки и to >= from.

Аргументы
from- начальная позиция
to- конечная позиция (не входит в результат)
Возвращает
Подстроку, simple_str.

◆ join()

static my_type simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::join ( const T & strings,
s_str delimeter,
bool tail = false,
bool skip_empty = false,
Args &&... args )
inlinestaticinherited

Конкатенация строк из контейнера в одну строку

Аргументы
strings- контейнер со строками
delimeter- разделитель, добавляемый между строками
tail- добавить разделитель после последней строки
skip_empty- пропускать пустые строки без добавления разделителя
...args- параметры для инициализации аллокатора

Функция служит для слияния контейнера строк в одну строку с разделителем.

std::vector<ssa> strings = get_strings();
ssa delim = get_current_delimeter();
auto line = lstringa<200>::join(strings, delimeter);
static my_type join(const T &strings, s_str delimeter, bool tail=false, bool skip_empty=false, Args &&... args)
Определения sstring.h:2595

Стоит отметить, что при заранее известном разделителе лучше пользоваться строковым выражением e_join.

std::vector<ssa> strings = get_strings();
lstringa<200> line{e_join(strings, "/")};
constexpr auto e_join(const T &s, L &&d)
Получить строковое выражение, конкатенирующее строки в контейнере в одну строку с заданным разделител...
Определения sstring.h:4796

В этом случае компилятор может лучше оптимизировать код слияния строк.

◆ less_ia()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::less_ia ( str_piece text) const
inlinenoexceptinherited

Меньше ли строка другой строки посимвольно без учёта регистра ASCII символов

Аргументы
text- другая строка
Возвращает
меньше ли строка

◆ less_iu()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::less_iu ( str_piece text) const
inlinenoexceptinherited

Меньше ли строка другой строки посимвольно без учёта регистра Unicode символов первой плоскости (<0xFFFF)

Аргументы
text- другая строка
Возвращает
меньше ли строка

◆ lowered()

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::lowered ( ) const
inlineinherited

Получить копию строки в нижнем регистре Unicode символов первой плоскости (<0xFFFF)

Параметры шаблона
R- желаемый тип строки, по умолчанию тот же, чей метод вызывался.
Возвращает
R - копию строки в нижнем регистре

◆ lowered_from()

static my_type simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::lowered_from ( const From & f,
Args &&... args )
inlinestaticinherited

Создать копию переданной строки в нижнем регистре символов Unicode первой плоскости (<0xFFFF)

Аргументы
f- строка источник
...args- параметры для инициализации аллокатора

Регистр меняется упрощенными таблицами, где один code_point всегда меняется в один code_point (но для UTF-8 возможно, что длина в code unit'ах изменится).

◆ lowered_only_ascii()

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::lowered_only_ascii ( ) const
inlineinherited

Получить копию строки в нижнем регистре ASCII символов

Параметры шаблона
R- желаемый тип строки, по умолчанию тот же, чей метод вызывался.
Возвращает
R - копию строки в нижнем регистре

◆ lowered_only_ascii_from()

static my_type simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::lowered_only_ascii_from ( const From & f,
Args &&... args )
inlinestaticinherited

Создать копию переданной строки в нижнем регистре символов ASCII.

Аргументы
f- строка источник
...args- параметры для инициализации аллокатора

◆ make_empty()

template<typename K, Allocatorable Allocator = allocator_string>
my_type & simstr::sstring< K, Allocator >::make_empty ( )
inlinenoexcept

Сделать строку пустой

Возвращает
my_type& - ссылку на себя же

◆ mid()

str_piece simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::mid ( size_t from,
size_t len = -1 ) const
inlineconstexprnoexceptinherited

Получить часть строки как "кусок строки".

Аргументы
from- количество символов от начала строки. При превышении размера строки вернёт пустую строку.
len- количество символов в получаемом "куске". При выходе за пределы строки вернёт всё до конца строки.
Возвращает
Подстроку, simple_str.

◆ operator const K *()

simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::operator const K * ( ) const
inlinenoexceptinherited

Оператор преобразования в нуль-терминированную C-строку

Возвращает
const K* - указатель на начало строки

◆ operator s_str_nt()

simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::operator s_str_nt ( ) const
inlineinherited

Преобразовать в simple_str_nt.

Возвращает
simple_str_nt

◆ operator str_piece()

simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::operator str_piece ( ) const
inlineconstexprnoexceptinherited

Преобразовать себя в "кусок строки", включающий всю строку

Возвращает
str_piece

◆ operator()()

str_piece simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::operator() ( ptrdiff_t from,
ptrdiff_t len = 0 ) const
inlineconstexprnoexceptinherited

Получить часть строки как "simple_str".

Аргументы
from- количество символов от начала строки.
len- количество символов в получаемом "куске".
Возвращает
Подстроку, simple_str.

Если from меньше нуля, то отсчитывается -from символов от конца строки в сторону начала. Если len меньше или равно нулю, то отсчитать -len символов от конца строки

"0123456789"_ss(5, 2) == "56";
"0123456789"_ss(5) == "56789";
"0123456789"_ss(5, -1) == "5678";
"0123456789"_ss(-3) == "789";
"0123456789"_ss(-3, 2) == "78";
"0123456789"_ss(-4, -1) == "678";

◆ operator<=>() [1/2]

auto simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::operator<=> ( const base & other) const
inlineconstexprnoexceptinherited

Оператор сравнения строк

Аргументы
other- другая строка

◆ operator<=>() [2/2]

auto simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::operator<=> ( T && other) const
inlinenoexceptinherited

Оператор сравнения строки и строкового литерала

Аргументы
other- строковый литерал

◆ operator=() [1/6]

template<typename K, Allocatorable Allocator = allocator_string>
template<size_t N, bool forShared, typename A>
my_type & simstr::sstring< K, Allocator >::operator= ( const lstring< K, N, forShared, A > & other)
inline

Оператор присвоения другой строки типа lstring.

Аргументы
other- другая строка
Возвращает
my_type& - ссылку на себя же

◆ operator=() [2/6]

template<typename K, Allocatorable Allocator = allocator_string>
my_type & simstr::sstring< K, Allocator >::operator= ( const StrExprForType< K > auto & expr)
inline

Оператор присвоения строкового выражения

Аргументы
expr- строковое выражения
Возвращает
my_type& - ссылку на себя же

В строковом выражение допустимо ссылаться на части этой же строки, так как сначала создаётся копия.

◆ operator=() [3/6]

template<typename K, Allocatorable Allocator = allocator_string>
template<size_t N>
my_type & simstr::sstring< K, Allocator >::operator= ( lstring< K, N, true, Allocator > && other)
inline

Оператор присвоения перемещаемой строки типа lstring с совместимым буфером

Аргументы
other- другая строка
Возвращает
my_type& - ссылку на себя же

◆ operator=() [4/6]

template<typename K, Allocatorable Allocator = allocator_string>
my_type & simstr::sstring< K, Allocator >::operator= ( my_type other)
inlinenoexcept

Оператор присвоения другой строки того же типа

Аргументы
other- другая строка
Возвращает
my_type& - ссылку на себя же

◆ operator=() [5/6]

template<typename K, Allocatorable Allocator = allocator_string>
my_type & simstr::sstring< K, Allocator >::operator= ( simple_str< K > other)
inline

Оператор присвоения другой строки другого типа

Аргументы
other- другая строка
Возвращает
my_type& - ссылку на себя же

◆ operator=() [6/6]

template<typename K, Allocatorable Allocator = allocator_string>
template<typename T, size_t N = const_lit_for<K, T>::Count>
my_type & simstr::sstring< K, Allocator >::operator= ( T && other)
inline

Оператор присвоения строкового литерала

Аргументы
other- строковый литера
Возвращает
my_type& - ссылку на себя же

◆ operator==() [1/2]

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::operator== ( const base & other) const
inlineconstexprnoexceptinherited

Оператор сравнение строк на равенство

Аргументы
other- другая строка
Возвращает
равны ли строки

◆ operator==() [2/2]

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::operator== ( T && other) const
inlinenoexceptinherited

Оператор сравнения строки и строкового литерала на равенство

Аргументы
other- строковый литерал

◆ place()

K * simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::place ( K * ptr) const
inlineconstexprnoexceptinherited

Копировать строку в указанный буфер.

Метод предполагает, что размер выделенного буфера достаточен для всей строки, т.е. предварительно была запрошена length(). Не добавляет \0.

Аргументы
ptr- указатель на буфер
Возвращает
указатель на символ после конца размещённой в буфере строки

◆ prefix_in()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::prefix_in ( str_piece text) const
inlineconstexprnoexceptinherited

Является ли эта строка началом другой строки

Аргументы
text- другая строка

◆ printf()

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... T>
static my_type simstr::sstring< K, Allocator >::printf ( const K * pattern,
T &&... args )
inlinestatic

Получить строку, отформатированную с помощью std::sprintf

Аргументы
pattern- форматная строка
...args- аргументы для sprintf
Возвращает
my_type

Для Windows поддерживаются posix позиционные аргументы, используется _sprintf_p.

◆ replace_init()

expr_replaces< K, N - 1, L - 1 > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::replace_init ( T && pattern,
M && repl ) const
inlineinherited

Получить строковое выражение, которое выдает строку с заменёнными подстроками, заданными строковыми литералами.

Аргументы
pattern- строковый литерал, подстрока, которую меняем
repl- строковый литерал, подстрока, на которую меняем
Возвращает
строковое выражение, заменяющее подстроки

◆ replaced()

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::replaced ( str_piece pattern,
str_piece repl,
size_t offset = 0,
size_t maxCount = 0 ) const
inlineinherited

Получить копию строки с заменёнными вхождениями подстрок

Параметры шаблона
R- желаемый тип строки, по умолчанию тот же, чей метод вызывался.
Аргументы
pattern- искомая подстрока
repl- строка, на которую заменять
offset- начальная позиция поиска
maxCount- максимальное количество замен, 0 - без ограничений
Возвращает
R строку заданного типа, по умолчанию того же, чей метод вызывался.

◆ replaced_from()

static my_type simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::replaced_from ( const From & f,
s_str pattern,
s_str repl,
size_t offset = 0,
size_t maxCount = 0,
Args &&... args )
inlinestaticinherited

Создать копию переданной строки с заменой подстрок

Аргументы
f- строка источник
pattern- подстрока, которую надо заменить
repl- строка, на которую надо заменить
offset- начальная позиция для поиска подстрок
maxCount- максимальное количество замен, 0 - без ограничений
...args- параметры для инициализации аллокатора

◆ size()

size_t simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::size ( ) const
inlineinherited

Размер строки в символах.

Возвращает
size_t

◆ split()

T simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::split ( str_piece delimeter,
size_t offset = 0 ) const
inlineinherited

Разделить строку на подстроки по заданному разделителю

Параметры шаблона
T- тип контейнера для результата
Аргументы
delimeter- разделитель
offset- позиция начала поиска разделителя
Возвращает
T - контейнер с результатом

◆ splitf()

T simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::splitf ( str_piece delimeter,
const Op & beforeFunc,
size_t offset = 0 ) const
inlineinherited

Разделить строку на части по заданному разделителю, с возможным применением функтора к каждой подстроке

Параметры шаблона
T- тип контейнера для складывания подстрок.
Аргументы
delimeter- подстрока разделитель
beforeFunc- функтор для применения к найденным подстрокам, перед помещением их в результат
offset- позиция начала поиска разделителя
Возвращает
T - результат.

Для каждой найденной подстроки, если функтор может принять её, вызывается функтор, и подстрока присваивается результату функтора. Далее подстрока пытается добавиться в результат, вызывая один из его методов - emplace_back, push_back, operator[]. Если ни одного этого метода нет, ничего не делается, только вызов функтора. operator[] пытается применится, если у результата можно получить размер через std::size и мы не выходим за этот размер. При этом, если найденная подстрока получается совпадающей со всей строкой - в результат пытается поместить не подстроку, а весь объект строки, что позволяет, например, эффективно копировать sstring.

◆ splitter()

Splitter< K > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::splitter ( str_piece delimeter) const
inherited

Получить объект Splitter по заданному разделителю, который позволяет последовательно получать подстроки методом next(), пока is_done() false.

Аргументы
delimeter- разделитель
Возвращает
Splitter<K>

◆ starts_with()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::starts_with ( str_piece prefix) const
inlineconstexprnoexceptinherited

Начинается ли строка с заданной подстроки

Аргументы
prefix- подстрока

◆ starts_with_ia()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::starts_with_ia ( str_piece prefix) const
inlineconstexprnoexceptinherited

Начинается ли строка с заданной подстроки без учёта регистра ASCII символов

Аргументы
prefix- подстрока

◆ starts_with_iu()

bool simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::starts_with_iu ( str_piece prefix) const
inlinenoexceptinherited

Начинается ли строка с заданной подстроки без учёта регистра Unicode символов первой плоскости (<0xFFFF)

Аргументы
prefix- подстрока

◆ str_mid()

my_type simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::str_mid ( size_t from,
size_t len = -1 ) const
inlineinherited

Получить часть строки объектом того же типа, к которому применён метод, аналогично mid.

Аргументы
from- количество символов от начала строки. При превышении размера строки вернёт пустую строку.
len- количество символов в получаемом "куске". При выходе за пределы строки вернёт всё до конца строки.
Возвращает
Строку того же типа, к которому применён метод.

◆ strcmp()

int simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::strcmp ( const K * text) const
inlineconstexprinherited

Сравнение с C-строкой посимвольно

Аргументы
o- другая строка
Возвращает
<0 эта строка меньше, ==0 - строки равны, >0 - эта строка больше

◆ substr()

my_type simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::substr ( ptrdiff_t from,
ptrdiff_t len = 0 ) const
inlineinherited

Получить подстроку. Работает аналогично operator(), только результат выдает того же типа, к которому применён метод

Аргументы
from- количество символов от начала строки. Если меньше нуля, отсчитывается от конца строки в сторону начала.
len- количество символов в получаемом "куске". Если меньше или равно нулю, то отсчитать len символов от конца строки
Возвращает
my_type - подстроку, объект того же типа, к которому применён метод

◆ to_double()

double simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::to_double ( ) const
inlinenoexceptinherited

Преобразовать строку в double.

Возвращает
double. Пока работает только для строк из char, wchar_t и типов, совместимых с wchar_t по размеру.

◆ to_int()

std::tuple< T, IntConvertResult, size_t > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::to_int ( ) const
inlinenoexceptinherited

Преобразовать строку в число заданного типа

Параметры шаблона
T- желаемый тип числа
CheckOverflow- проверять на переполнение
Base- основание счисления числа, от -1 до 36, кроме 1.
  • Если 0: то пытается определить основание по префиксу 0[xX] как 16, 0 как 8, иначе 10
  • Если -1: то пытается определить основание по префиксам:
    • 0 или 0[oO]: 8
    • 0[bB]: 2
    • 0[xX]: 16
    • в остальных случаях 10.
SkipWs- пропускать пробельные символы в начале строки. Пропускаются все символы с ASCII кодами <= 32.
AllowSign- допустим ли знак '+' перед числом
Возвращает
std::tuple<T, IntConvertResult, size_t> - кортеж из полученного числа, успешности преобразования и количестве обработанных символов

◆ to_nts()

s_str_nt simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::to_nts ( size_t from = 0) const
inlineinherited

Получить simple_str_nt, начиная с заданного символа

Аргументы
from- позиция начального символа, по умолчанию 0
Возвращает
simple_str_nt

◆ to_str()

str_piece simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::to_str ( ) const
inlinenoexceptinherited

Преобразовать себя в "кусок строки", включающий всю строку

Возвращает
str_piece

◆ to_string()

std::string simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::to_string ( ) const
inlinenoexceptinherited

Конвертировать в std::string.

Возвращает
std::string

◆ to_sv()

std::string_view simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::to_sv ( ) const
inlinenoexceptinherited

Конвертировать в std::string_view.

Возвращает
std::string_view

◆ trimmed() [1/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed ( ) const
inlineinherited

Получить строку с удалением пробельных символов слева и справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Возвращает
R - строка, с удалёнными в начале и в конце пробельными символами

◆ trimmed() [2/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed ( str_piece pattern) const
inlineinherited

Получить строку с удалением символов, заданных другой строкой, слева и справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строка, задающая символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале и в конце символами, содержащимися в шаблоне

◆ trimmed() [3/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed ( T && pattern) const
inlineinherited

Получить строку с удалением символов, заданных строковым литералом, слева и справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строковый литерал, задающий символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале и в конце символами, содержащимися в литерале

◆ trimmed_left() [1/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_left ( ) const
inlineinherited

Получить строку с удалением пробельных символов слева

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Возвращает
R - строка, с удалёнными в начале пробельными символами

◆ trimmed_left() [2/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_left ( str_piece pattern) const
inlineinherited

Получить строку с удалением символов, заданных другой строкой, слева

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строка, задающая символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале символами, содержащимися в шаблоне

◆ trimmed_left() [3/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_left ( T && pattern) const
inlineinherited

Получить строку с удалением символов, заданных строковым литералом, слева

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строковый литерал, задающий символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале символами, содержащимися в литерале

◆ trimmed_left_with_spaces() [1/2]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_left_with_spaces ( str_piece pattern) const
inlineinherited

Получить строку с удалением символов, заданных другой строкой, а также пробельных символов, слева

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строка, задающая символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале символами, содержащимися в шаблоне и пробельными символами

◆ trimmed_left_with_spaces() [2/2]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_left_with_spaces ( T && pattern) const
inlineinherited

Получить строку с удалением символов, заданных строковым литералом, а также пробельных символов, слева

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строковый литерал, задающий символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале символами, содержащимися в литерале и пробельными символами

◆ trimmed_right() [1/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_right ( ) const
inlineinherited

Получить строку с удалением пробельных символов справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Возвращает
R - строка, с удалёнными в конце пробельными символами

◆ trimmed_right() [2/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_right ( str_piece pattern) const
inlineinherited

Получить строку с удалением символов, заданных другой строкой, справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строка, задающая символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в конце символами, содержащимися в шаблоне

◆ trimmed_right() [3/3]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_right ( T && pattern) const
inlineinherited

Получить строку с удалением символов, заданных строковым литералом, справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строковый литерал, задающий символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в конце символами, содержащимися в литерале

◆ trimmed_right_with_spaces() [1/2]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_right_with_spaces ( str_piece pattern) const
inlineinherited

Получить строку с удалением символов, заданных другой строкой, а также пробельных символов, справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строка, задающая символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в конце символами, содержащимися в шаблоне и пробельными символами

◆ trimmed_right_with_spaces() [2/2]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_right_with_spaces ( T && pattern) const
inlineinherited

Получить строку с удалением символов, заданных строковым литералом, а также пробельных символов, справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строковый литерал, задающий символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в конце символами, содержащимися в литерале и пробельными символами

◆ trimmed_with_spaces() [1/2]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_with_spaces ( str_piece pattern) const
inlineinherited

Получить строку с удалением символов, заданных другой строкой, а также пробельных символов, слева и справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строка, задающая символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале и в конце символами, содержащимися в шаблоне и пробельными символами

◆ trimmed_with_spaces() [2/2]

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::trimmed_with_spaces ( T && pattern) const
inlineinherited

Получить строку с удалением символов, заданных строковым литералом, а также пробельных символов, слева и справа

Параметры шаблона
R- желаемый тип строки, по умолчанию simple_str
Аргументы
pattern- строковый литерал, задающий символы, которые будут обрезаться
Возвращает
R - строка, с удалёнными в начале и в конце символами, содержащимися в литерале и пробельными символами

◆ uppered()

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::uppered ( ) const
inlineinherited

Получить копию строки в верхнем регистре Unicode символов первой плоскости (<0xFFFF)

Параметры шаблона
R- желаемый тип строки, по умолчанию тот же, чей метод вызывался.
Возвращает
R - копию строки в верхнем регистре

◆ uppered_from()

static my_type simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::uppered_from ( const From & f,
Args &&... args )
inlinestaticinherited

Создать копию переданной строки в верхнем регистре символов Unicode первой плоскости (<0xFFFF)

Аргументы
f- строка источник
...args- параметры для инициализации аллокатора

Регистр меняется упрощенными таблицами, где один code_point всегда меняется в один code_point (но для UTF-8 возможно, что длина в code unit'ах изменится).

◆ uppered_only_ascii()

R simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::uppered_only_ascii ( ) const
inlineinherited

Получить копию строки в верхнем регистре ASCII символов

Параметры шаблона
R- желаемый тип строки, по умолчанию тот же, чей метод вызывался.
Возвращает
R - копию строки в верхнем регистре

◆ uppered_only_ascii_from()

static my_type simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::uppered_only_ascii_from ( const From & f,
Args &&... args )
inlinestaticinherited

Создать строку, копию переданной в верхнем регистре символов ASCII.

Аргументы
f- строка источник
...args- параметры для инициализации аллокатора

◆ vformat()

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... T>
static my_type simstr::sstring< K, Allocator >::vformat ( simple_str< K > fmtString,
T &&... args )
inlinestatic

Получить строку, отформатированную с помощью std::vformat

Аргументы
pattern- форматная строка
...args- аргументы для std::vformat
Возвращает
my_type

Объявления и описания членов класса находятся в файле: