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

Пространство имён для объектов библиотеки Подробнее...

Классы

class  chunked_string_builder
 Для построения длинных динамических строк конкатенацией мелких кусочков. Подробнее...
 
struct  empty_expr
 "Пустое" строковое выражение Подробнее...
 
struct  expr_choice
 Строковое выражение условного выбора Подробнее...
 
struct  expr_choice_one_lit
 Строковое выражение условного выбора Подробнее...
 
struct  expr_choice_two_lit
 Строковое выражение условного выбора Подробнее...
 
struct  expr_if
 Строковое выражение условного выбора Подробнее...
 
struct  expr_pad
 Тип строкового выражения, возвращающего N заданных символов. Подробнее...
 
struct  expr_replace_symbols
 Тип для строкового выражения, генерирующее строку, в которой заданные символы заменяются на заданные строки. Подробнее...
 
struct  expr_replaced
 Строковое выражение, генерирующее строку с заменой всех вхождений заданной подстроки. Подробнее...
 
struct  expr_spaces
 Тип строкового выражения, возвращающего N заданных символов. Подробнее...
 
struct  expr_stdstr
 Тип для использования std::string и std::string_view как источников в строковых выражениях Подробнее...
 
struct  expr_utf
 Строковое выражение для конвертации строк в разные виды UTF. Подробнее...
 
class  from_utf_convertable
 Базовый класс для строк, могущих конвертироваться из другого типа символов. Подробнее...
 
class  hashStrMap
 Контейнер для более эффективного поиска по строковым ключам. Подробнее...
 
class  lstring
 Класс мутабельной, владеющей строки. Содержит внутренний буфер для строк заданного размера. Подробнее...
 
struct  simple_str
 Простейший класс иммутабельной не владеющей строки. Подробнее...
 
struct  simple_str_nt
 Класс, заявляющий, что ссылается на нуль-терминированную строку. Подробнее...
 
class  Splitter
 Класс для последовательного получения подстрок по заданному разделителю Подробнее...
 
class  sstring
 Класс иммутабельной владеющей строки Подробнее...
 
class  str_algs
 Класс с базовыми константными строковыми алгоритмами. Подробнее...
 
class  str_mutable
 Базовый класс работы с изменяемыми строками Подробнее...
 
class  str_storable
 База для объектов, владеющих строкой Подробнее...
 
struct  strexprjoin
 Шаблонный класс для конкатенации двух строковых выражений в одно с помощью operator + Подробнее...
 
struct  strexprjoin_c
 Конкатенация ссылки на строковое выражение и значения строкового выражения Подробнее...
 

Концепты

concept  storable_str
 Концепт типа, который может сохранить строку
 
concept  mutable_str
 Концепт типа, который может модифицировать хранимую строку
 
concept  immutable_str
 Концепт типа, который не может модифицировать хранимую строку
 
concept  Allocatorable
 Концепт типа, управляющего памятью
 
concept  StrType
 Базовая концепция строкового объекта.
 
concept  StrExpr
 Концепт "Строковых выражений".
 
concept  StrExprForType
 Концепт строкового выражения заданного типа символов
 

Определения типов

template<typename T>
using hashStrMapA = hashStrMap<u8s, T, strhash<u8s>, streql<u8s>>
 Тип хеш-словаря для char строк, регистрозависимый поиск
 
template<typename T>
using hashStrMapAIA = hashStrMap<u8s, T, strhashia<u8s>, streqlia<u8s>>
 Тип хеш-словаря для char строк, регистронезависимый поиск для ASCII символов
 
template<typename T>
using hashStrMapAIU = hashStrMap<u8s, T, strhashiu<u8s>, streqliu<u8s>>
 Тип хеш-словаря для char строк, регистронезависимый поиск для Unicode символов до 0xFFFF.
 
template<typename T>
using hashStrMapW = hashStrMap<wchar_t, T, strhash<wchar_t>, streql<wchar_t>>
 Тип хеш-словаря для wchar_t строк, регистрозависимый поиск
 
template<typename T>
using hashStrMapWIA = hashStrMap<wchar_t, T, strhashia<wchar_t>, streqlia<wchar_t>>
 Тип хеш-словаря для wchar_t строк, регистронезависимый поиск для ASCII символов
 
template<typename T>
using hashStrMapWIU = hashStrMap<wchar_t, T, strhashiu<wchar_t>, streqliu<wchar_t>>
 Тип хеш-словаря для wchar_t строк, регистронезависимый поиск для Unicode символов до 0xFFFF.
 
template<typename T>
using hashStrMapU = hashStrMap<u16s, T, strhash<u16s>, streql<u16s>>
 Тип хеш-словаря для char16_t строк, регистрозависимый поиск
 
template<typename T>
using hashStrMapUIA = hashStrMap<u16s, T, strhashia<u16s>, streqlia<u16s>>
 Тип хеш-словаря для char16_t строк, регистронезависимый поиск для ASCII символов
 
template<typename T>
using hashStrMapUIU = hashStrMap<u16s, T, strhashiu<u16s>, streqliu<u16s>>
 Тип хеш-словаря для char16_t строк, регистронезависимый поиск для Unicode символов до 0xFFFF.
 
template<typename T>
using hashStrMapUU = hashStrMap<u32s, T, strhash<u32s>, streql<u32s>>
 Тип хеш-словаря для char32_t строк, регистрозависимый поиск
 
template<typename T>
using hashStrMapUUIA = hashStrMap<u32s, T, strhashia<u32s>, streqlia<u32s>>
 Тип хеш-словаря для char32_t строк, регистронезависимый поиск для ASCII символов
 
template<typename T>
using hashStrMapUUIU = hashStrMap<u32s, T, strhashiu<u32s>, streqliu<u32s>>
 Тип хеш-словаря для char32_t строк, регистронезависимый поиск для Unicode символов до 0xFFFF.
 

Перечисления

enum class  IntConvertResult : char { Success , BadSymbolAtTail , Overflow , NotNumber }
 Перечисление с возможными результатами преобразования строки в целое число Подробнее...
 

Функции

template<typename To, typename From>
requires (!std::is_same_v<From, To>)
auto e_utf (simple_str< From > from)
 Возвращает строковое выражение, преобразующую строку из одного типа символов в другой тип, через UTF-конвертирование.
 
template<StrExpr A, FromIntNumber T>
constexpr auto operator+ (const A &a, T s)
 Оператор конкатенации для строкового выражения и целого числа.
 
template<StrExpr A, FromIntNumber T>
constexpr auto operator+ (T s, const A &a)
 Оператор конкатенации для целого числа и строкового выражения.
 
template<typename K, typename T>
constexpr auto e_num (T t)
 Преобразование целого числа в строковое выражение
 
template<StrExpr A, typename R>
requires (is_one_of_std_char_v<typename A::symb_type> && (std::is_same_v<R, double> || std::is_same_v<R, float>))
constexpr auto operator+ (const A &a, R s)
 Оператор конкатенации для строкового выражения и вещественного числа (float, double).
 
template<StrExpr A, typename R>
requires (is_one_of_std_char_v<typename A::symb_type> && (std::is_same_v<R, double> || std::is_same_v<R, float>))
constexpr auto operator+ (R s, const A &a)
 Оператор конкатенации для вещественного числа (float, double) и строкового выражения.
 
template<typename K>
requires (is_one_of_std_char_v<K>)
constexpr auto e_real (double t)
 Преобразование double числа в строковое выражение
 
template<bool tail = false, bool skip_empty = false, typename L, typename K = typename const_lit<L>::symb_type, size_t I = const_lit<L>::Count, typename T>
constexpr auto e_join (const T &s, L &&d)
 Получить строковое выражение, конкатенирующее строки в контейнере в одну строку с заданным разделителем
 
template<typename K, typename T, size_t N = const_lit_for<K, T>::Count, typename X, size_t L = const_lit_for<K, X>::Count>
requires (N > 1)
constexpr auto e_repl (simple_str< K > w, T &&p, X &&r)
 Получить строковое выражение, генерирующее строку с заменой всех вхождений заданной подстроки
 
template<bool UseVector = false, typename K, typename ... Repl>
requires (sizeof...(Repl) % 2 == 0)
auto e_repl_const_symbols (simple_str< K > src, Repl &&... other)
 Возвращает строковое выражение, генерирующее строку, в которой заданные символы заменены на заданные подстроки.
 
consteval simple_str_nt< u8s > operator""_ss (const u8s *ptr, size_t l)
 Оператор литерал в simple_str_nt.
 
consteval simple_str_nt< uws > operator""_ss (const uws *ptr, size_t l)
 Оператор литерал в simple_str_nt.
 
consteval simple_str_nt< u16s > operator""_ss (const u16s *ptr, size_t l)
 Оператор литерал в simple_str_nt.
 
consteval simple_str_nt< u32s > operator""_ss (const u32s *ptr, size_t l)
 Оператор литерал в simple_str_nt.
 
consteval StoreType< u8s > operator""_h (const u8s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем с учётом регистра
 
consteval StoreType< u8s > operator""_ia (const u8s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра ASCII.
 
StoreType< u8s > operator""_iu (const u8s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра simple unicode.
 
consteval StoreType< u16s > operator""_h (const u16s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем с учётом регистра
 
consteval StoreType< u16s > operator""_ia (const u16s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра ASCII.
 
StoreType< u16s > operator""_iu (const u16s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра simple unicode.
 
consteval StoreType< u32s > operator""_h (const u32s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем с учётом регистра
 
consteval StoreType< u32s > operator""_ia (const u32s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра ASCII.
 
StoreType< u32s > operator""_iu (const u32s *ptr, size_t l)
 Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра simple unicode.
 
std::ostream & operator<< (std::ostream &stream, ssa text)
 Оператор вывода в поток simple_str.
 
std::wostream & operator<< (std::wostream &stream, ssw text)
 Оператор вывода в поток simple_str.
 
std::wostream & operator<< (std::wostream &stream, simple_str< wchar_type > text)
 Оператор вывода в поток simple_str.
 
std::ostream & operator<< (std::ostream &stream, const stringa &text)
 Оператор вывода в поток sstring.
 
std::wostream & operator<< (std::wostream &stream, const stringw &text)
 Оператор вывода в поток sstring.
 
std::wostream & operator<< (std::wostream &stream, const sstring< wchar_type > &text)
 Оператор вывода в поток sstring.
 
template<size_t N, bool S, simstr::Allocatorable A>
std::ostream & operator<< (std::ostream &stream, const lstring< u8s, N, S, A > &text)
 Оператор вывода в поток lstring.
 
template<size_t N, bool S, simstr::Allocatorable A>
std::wostream & operator<< (std::wostream &stream, const lstring< uws, N, S, A > &text)
 Оператор вывода в поток lstring.
 
template<size_t N, bool S, simstr::Allocatorable A>
std::wostream & operator<< (std::wostream &stream, const lstring< wchar_type, N, S, A > &text)
 Оператор вывода в поток lstring.
 
template<StrExpr A, StrExprForType< typename A::symb_type > B>
auto operator+ (const A &a, const B &b)
 Оператор сложения двух произвольных строковых выражения для одинакового типа символов.
 
template<typename K, StrExprForType< K > A>
constexpr auto operator+ (const A &a, K s)
 Оператор сложения строкового выражения и одного символа
 
template<typename K>
constexpr auto e_char (K s)
 Генерирует строку из 1 заданного символа
 
template<typename T, size_t N = const_lit<T>::Count>
constexpr auto e_t (T &&s)
 Преобразует строковый литерал в строковое выражение.
 
template<StrExpr A, typename K = typename A::symb_type, typename T, size_t N = const_lit_for<K, T>::Count>
constexpr auto operator+ (const A &a, T &&s)
 Оператор сложения для строкового выражения и строкового литерала такого же типа символов
 
template<StrExpr A, typename K = typename A::symb_type, typename T, size_t N = const_lit_for<K, T>::Count>
constexpr auto operator+ (T &&s, const A &a)
 Оператор сложения для строкового литерала такого же типа символов и строкового выражения
 
template<size_t N>
constexpr auto e_spca ()
 Генерирует строку из N char пробелов
 
template<size_t N>
constexpr auto e_spcw ()
 Генерирует строку из N wchar_t пробелов
 
template<typename K>
constexpr auto e_c (size_t l, K s)
 Генерирует строку из l символов s типа K.
 
template<StrExpr A, StrExprForType< typename A::symb_type > B>
constexpr auto e_choice (bool c, const A &a, const B &b)
 Создание условного строкового выражения expr_choice.
 
template<StrExpr A, typename T, size_t N = const_lit_for<typename A::symb_type, T>::Count>
constexpr auto e_choice (bool c, const A &a, T &&str)
 Перегрузка e_choice, когда третий аргумент - строковый литерал
 
template<StrExpr A, typename T, size_t N = const_lit_for<typename A::symb_type, T>::Count>
constexpr auto e_choice (bool c, T &&str, const A &a)
 Перегрузка e_choice, когда второй аргумент - строковый литерал
 
template<typename T, typename L, size_t N = const_lit<T>::Count, size_t M = const_lit_for<typename const_lit<T>::symb_type, L>::Count>
constexpr auto e_choice (bool c, T &&str_a, L &&str_b)
 Перегрузка e_choice, когда второй и третий аргумент - строковые литералы
 
template<StrExpr A>
constexpr auto e_if (bool c, const A &a)
 Создание условного строкового выражения expr_if.
 
template<typename T, size_t N = const_lit<T>::Count>
constexpr auto e_if (bool c, T &&str)
 Перегрузка e_if, когда второй аргумент - строковый литерал
 
template<StrExprForType< u8s > A>
auto operator+ (const A &a, const std::string &s)
 Оператор сложения для char строкового выражения и std::string.
 
template<StrExprForType< u8s > A>
auto operator+ (const std::string &s, const A &a)
 Оператор сложения для std::string и char строкового выражения
 
template<StrExprForType< u8s > A>
auto operator+ (const A &a, const std::string_view &s)
 Оператор сложения для char строкового выражения и std::string_view.
 
template<StrExprForType< u8s > A>
auto operator+ (const std::string_view &s, const A &a)
 Оператор сложения для std::string_view и char строкового выражения
 
template<StrExprForType< uws > A>
auto operator+ (const A &a, const std::wstring &s)
 Оператор сложения для wchar_t строкового выражения и std::wstring.
 
template<StrExprForType< uws > A>
auto operator+ (const std::wstring &s, const A &a)
 Оператор сложения для std::wstring и wchar_t строкового выражения
 
template<StrExprForType< uws > A>
auto operator+ (const A &a, const std::wstring_view &s)
 Оператор сложения для wchar_t строкового выражения и std::wstring_view.
 
template<StrExprForType< uws > A>
auto operator+ (const std::wstring_view &s, const A &a)
 Оператор сложения для std::wstring_view и wchar_t строкового выражения
 

Переменные

constexpr empty_expr< u8s > eea {}
 Пустое строковое выражение типа char.
 
constexpr empty_expr< uws > eew {}
 Пустое строковое выражение типа wchar_t.
 
constexpr empty_expr< u16s > eeu {}
 Пустое строковое выражение типа char16_t.
 
constexpr empty_expr< u32s > eeuu {}
 Пустое строковое выражение типа char32_t.
 

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

Пространство имён для объектов библиотеки

Перечисления

◆ IntConvertResult

enum class simstr::IntConvertResult : char
strong

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

Элементы перечислений
Success 

Успешно

BadSymbolAtTail 

Число закончилось не числовым символом

Overflow 

Переполнение, число не помещается в заданный тип

NotNumber 

Вообще не число

Функции

◆ e_utf()

template<typename To, typename From>
requires (!std::is_same_v<From, To>)
auto simstr::e_utf ( simple_str< From > from)

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

Параметры шаблона
To- тип строки, в которую надо конвертировать
From- тип строки, из которого надо конвертировать. Выводится из аргумента.
Аргументы
from- строка, из которой надо конвертировать.

◆ operator""_h() [1/3]

StoreType< u16s > simstr::literals::operator""_h ( const u16s * ptr,
size_t l )
consteval

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем с учётом регистра

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_h() [2/3]

StoreType< u32s > simstr::literals::operator""_h ( const u32s * ptr,
size_t l )
consteval

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем с учётом регистра

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_h() [3/3]

StoreType< u8s > simstr::literals::operator""_h ( const u8s * ptr,
size_t l )
consteval

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем с учётом регистра

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_ia() [1/3]

StoreType< u16s > simstr::literals::operator""_ia ( const u16s * ptr,
size_t l )
consteval

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра ASCII.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_ia() [2/3]

StoreType< u32s > simstr::literals::operator""_ia ( const u32s * ptr,
size_t l )
consteval

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра ASCII.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_ia() [3/3]

StoreType< u8s > simstr::literals::operator""_ia ( const u8s * ptr,
size_t l )
consteval

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра ASCII.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_iu() [1/3]

StoreType< u16s > simstr::literals::operator""_iu ( const u16s * ptr,
size_t l )
inline

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра simple unicode.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_iu() [2/3]

StoreType< u32s > simstr::literals::operator""_iu ( const u32s * ptr,
size_t l )
inline

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра simple unicode.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_iu() [3/3]

StoreType< u8s > simstr::literals::operator""_iu ( const u8s * ptr,
size_t l )
inline

Оператор литерал в ключ для hashStrMap с посчитанным в compile time хешем без учёта регистра simple unicode.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
StoreType

◆ operator""_ss() [1/4]

simple_str_nt< u16s > simstr::literals::operator""_ss ( const u16s * ptr,
size_t l )
consteval

Оператор литерал в simple_str_nt.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
simple_str_nt

◆ operator""_ss() [2/4]

simple_str_nt< u32s > simstr::literals::operator""_ss ( const u32s * ptr,
size_t l )
consteval

Оператор литерал в simple_str_nt.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
simple_str_nt

◆ operator""_ss() [3/4]

simple_str_nt< u8s > simstr::literals::operator""_ss ( const u8s * ptr,
size_t l )
consteval

Оператор литерал в simple_str_nt.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
simple_str_nt

◆ operator""_ss() [4/4]

simple_str_nt< uws > simstr::literals::operator""_ss ( const uws * ptr,
size_t l )
consteval

Оператор литерал в simple_str_nt.

Аргументы
ptr- указатель на строку
l- длина строки
Возвращает
simple_str_nt

◆ operator<<() [1/9]

template<size_t N, bool S, simstr::Allocatorable A>
std::ostream & simstr::operator<< ( std::ostream & stream,
const lstring< u8s, N, S, A > & text )
inline

Оператор вывода в поток lstring.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [2/9]

std::ostream & simstr::operator<< ( std::ostream & stream,
const stringa & text )
inline

Оператор вывода в поток sstring.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [3/9]

std::ostream & simstr::operator<< ( std::ostream & stream,
ssa text )
inline

Оператор вывода в поток simple_str.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [4/9]

template<size_t N, bool S, simstr::Allocatorable A>
std::wostream & simstr::operator<< ( std::wostream & stream,
const lstring< uws, N, S, A > & text )
inline

Оператор вывода в поток lstring.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [5/9]

template<size_t N, bool S, simstr::Allocatorable A>
std::wostream & simstr::operator<< ( std::wostream & stream,
const lstring< wchar_type, N, S, A > & text )
inline

Оператор вывода в поток lstring.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [6/9]

std::wostream & simstr::operator<< ( std::wostream & stream,
const sstring< wchar_type > & text )
inline

Оператор вывода в поток sstring.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [7/9]

std::wostream & simstr::operator<< ( std::wostream & stream,
const stringw & text )
inline

Оператор вывода в поток sstring.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [8/9]

std::wostream & simstr::operator<< ( std::wostream & stream,
simple_str< wchar_type > text )
inline

Оператор вывода в поток simple_str.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&

◆ operator<<() [9/9]

std::wostream & simstr::operator<< ( std::wostream & stream,
ssw text )
inline

Оператор вывода в поток simple_str.

Аргументы
stream- поток вывода
text- текст
Возвращает
std::ostream&