simstr 1.3.1
Yet another strings library
 
Loading...
Searching...
No Matches
simstr::sstring< K, Allocator > Class Template Reference

Immutable owning string class. More...

#include <sstring.h>

Inheritance diagram for 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_convertible< K, sstring< K, allocator_string > >

Public Member Functions

template<typename... Args>
requires (std::is_constructible_v<allocator_t, Args...> && sizeof...(Args) > 0)
 sstring (Args &&... args) noexcept(std::is_nothrow_constructible_v< allocator_t, Args... >)
 Constructor for the empty string.
 
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
 sstring (s_str other, Args &&... args)
 A constructor from another string object.
 
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
 sstring (size_t repeat, s_str pattern, Args &&... args)
 String repetition constructor.
 
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
 sstring (size_t count, K pad, Args &&... args)
 Character repetition constructor.
 
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
constexpr sstring (const StrExprForType< K > auto &expr, Args &&... args)
 Constructor from a string expression.
 
template<StrType< K > From, typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
 sstring (const From &f, s_str pattern, s_str repl, size_t offset=0, size_t maxCount=0, Args &&... args)
 Constructor from string source with replacement.
 
constexpr ~sstring ()
 String destructor.
 
constexpr sstring (const my_type &other) noexcept
 String copy constructor.
 
constexpr sstring (my_type &&other) noexcept
 Move constructor.
 
template<size_t N>
constexpr sstring (lstring< K, N, true, Allocator > &&src)
 A move constructor from lstring with an sstring-compatible external buffer.
 
template<typename T, size_t N = const_lit_for<K, T>::Count, typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
constexpr sstring (T &&s, Args &&... args)
 Initialize from a string literal.
 
constexpr my_typeoperator= (my_type other) noexcept
 Assignment operator to another string of the same type.
 
constexpr my_typeoperator= (simple_str< K > other)
 Assignment operator to another string of a different type.
 
template<typename T, size_t N = const_lit_for<K, T>::Count>
constexpr my_typeoperator= (T &&other)
 String literal assignment operator.
 
template<size_t N, bool forShared, typename A>
constexpr my_typeoperator= (const lstring< K, N, forShared, A > &other)
 Assignment operator to another string of type lstring.
 
template<size_t N>
constexpr my_typeoperator= (lstring< K, N, true, Allocator > &&other)
 Assignment operator to a movable string of type lstring with a compatible buffer.
 
constexpr my_typeoperator= (const StrExprForType< K > auto &expr)
 String expression assignment operator.
 
constexpr my_typemake_empty () noexcept
 Make the string empty.
 
constexpr const K * symbols () const noexcept
 Pointer to characters in the string.
 
constexpr size_t length () const noexcept
 Line length.
 
constexpr bool is_empty () const noexcept
 Is the string empty?
 
constexpr bool empty () const noexcept
 Whether the string is empty, for compatibility with std::string.
 
constexpr K * place (K *ptr) const noexcept
 Copy the string to the specified buffer.
 
void copy_to (K *buffer, size_t bufSize)
 Copy the string to the specified buffer.
 
constexpr size_t size () const
 The size of the string in characters.
 
constexpr operator str_piece () const noexcept
 Convert itself to a "string chunk" that includes the entire string.
 
constexpr str_piece to_str () const noexcept
 Convert itself to a "string chunk" that includes the entire string.
 
constexpr std::basic_string_view< K > to_sv () const noexcept
 Convert to std::string_view.
 
constexpr std::basic_string< K > to_string () const noexcept
 Convert to std::string.
 
constexpr str_piece operator() (ptrdiff_t from, ptrdiff_t len=0) const noexcept
 Get part of a string as "simple_str".
 
constexpr str_piece mid (size_t from, size_t len=-1) const noexcept
 Get part of a string as "string chunk".
 
constexpr str_piece from_to (size_t from, size_t to) const noexcept
 Get the substring simple_str from position from to position to (not including it).
 
constexpr bool operator! () const noexcept
 Check for emptiness.
 
constexpr K at (ptrdiff_t idx) const
 Get the character at the given position.
 
constexpr int compare (str_piece o) const
 Compare strings character by character.
 
constexpr int strcmp (const K *text) const
 Compare with C-string character by character.
 
constexpr bool equal (str_piece other) const noexcept
 String comparison for equality.
 
constexpr bool operator== (const base &other) const noexcept
 Operator comparing strings for equality.
 
constexpr bool operator== (T &&other) const noexcept
 Operator for comparing a string and a string literal for equality.
 
constexpr auto operator<=> (const base &other) const noexcept
 String comparison operator.
 
constexpr auto operator<=> (T &&other) const noexcept
 Comparison operator between a string and a string literal.
 
constexpr int compare_ia (str_piece text) const noexcept
 Compare strings character by character and not case sensitive ASCII characters.
 
constexpr bool equal_ia (str_piece text) const noexcept
 Whether a string is equal to another string, character-by-character-insensitive, of ASCII characters.
 
constexpr bool less_ia (str_piece text) const noexcept
 Whether a string is smaller than another string, character-by-character-insensitive, ASCII characters.
 
int compare_iu (str_piece text) const noexcept
 Compare strings character by character without taking into account the case of Unicode characters of the first plane (<0xFFFF).
 
bool equal_iu (str_piece text) const noexcept
 Whether a string is equal to another string, character-by-character-insensitive, of the Unicode characters of the first plane (<0xFFFF).
 
bool less_iu (str_piece text) const noexcept
 Whether a string is smaller than another string, character-by-character-insensitive, of the Unicode characters of the first plane (<0xFFFF).
 
constexpr size_t find (str_piece pattern, size_t offset=0) const noexcept
 Find the beginning of the first occurrence of a substring in this string.
 
constexpr size_t find (K s, size_t offset=0) const noexcept
 Find a character in this string.
 
constexpr size_t find_or_throw (str_piece pattern, size_t offset=0, Args &&... args) const noexcept
 Find the beginning of the first occurrence of a substring in this string or throw an exception.
 
constexpr size_t find_end (str_piece pattern, size_t offset=0) const noexcept
 Find the end of the occurrence of a substring in this string.
 
constexpr size_t find_or_all (str_piece pattern, size_t offset=0) const noexcept
 Find the beginning of the first occurrence of a substring in this string or the end of the string.
 
constexpr size_t find_or_all (K s, size_t offset=0) const noexcept
 Find a character in this string or the end of a string.
 
constexpr size_t find_end_or_all (str_piece pattern, size_t offset=0) const noexcept
 Find the end of the first occurrence of a substring in this string, or the end of a string.
 
constexpr size_t find_last (str_piece pattern, size_t offset=-1) const noexcept
 Find the beginning of the last occurrence of a substring in this string.
 
constexpr size_t find_last (K s, size_t offset=-1) const noexcept
 Find the last occurrence of a character in this string.
 
constexpr size_t find_end_of_last (str_piece pattern, size_t offset=-1) const noexcept
 Find the end of the last occurrence of a substring in this string.
 
constexpr size_t find_last_or_all (str_piece pattern, size_t offset=-1) const noexcept
 Find the beginning of the last occurrence of a substring in this string or the end of the string.
 
constexpr size_t find_end_of_last_or_all (str_piece pattern, size_t offset=-1) const noexcept
 Find the end of the last occurrence of a substring in this string, or the end of a string.
 
constexpr bool contains (str_piece pattern, size_t offset=0) const noexcept
 Whether the string contains the specified substring.
 
constexpr void for_all_finded (const Op &op, str_piece pattern, size_t offset=0, size_t maxCount=0) const
 Call a functor on all found occurrences of a substring in this string.
 
constexpr std::vector< size_t > find_all (str_piece pattern, size_t offset=0, size_t maxCount=0) const
 Find all occurrences of a substring in this string.
 
constexpr size_t find_first_of (str_piece pattern, size_t offset=0) const noexcept
 Find the first occurrence of a character from a given character set.
 
constexpr std::pair< size_t, size_t > find_first_of_idx (str_piece pattern, size_t offset=0) const noexcept
 Find the first occurrence of a character from a given character set.
 
constexpr size_t find_first_not_of (str_piece pattern, size_t offset=0) const noexcept
 Find the first occurrence of a character not from the given character set.
 
constexpr size_t find_last_of (str_piece pattern, size_t offset=str::npos) const noexcept
 Find the last occurrence of a character from a given character set.
 
constexpr std::pair< size_t, size_t > find_last_of_idx (str_piece pattern, size_t offset=str::npos) const noexcept
 Find the last occurrence of a character from a given character set.
 
constexpr size_t find_last_not_of (str_piece pattern, size_t offset=str::npos) const noexcept
 Find the last occurrence of a character not from the given character set.
 
constexpr my_type substr (ptrdiff_t from, ptrdiff_t len=0) const
 Get a substring. Works similarly to operator(), only the result is the same type as the method applied to.
 
constexpr my_type str_mid (size_t from, size_t len=-1) const
 Get part of a string with an object of the same type to which the method is applied, similar to mid.
 
constexpr T as_int () const noexcept
 Convert a string to a number of the given type.
 
constexpr convert_result< T > to_int () const noexcept
 Convert a string to a number of the given type.
 
std::optional< double > to_double () const noexcept
 Convert string to double.
 
std::optional< double > to_double_hex () const noexcept
 Convert string in hex form to double.
 
constexpr void as_number (T &t) const
 Convert a string to an integer.
 
void as_number (double &t) const
 Convert string to double.
 
constexpr T splitf (str_piece delimeter, const Op &beforeFunc, size_t offset=0) const
 Split a string into parts at a given delimiter, possibly applying a functor to each substring.
 
constexpr T split (str_piece delimeter, size_t offset=0) const
 Split a string into substrings using a given delimiter.
 
constexpr Splitter< K > splitter (str_piece delimeter) const
 Retrieve a Splitter object by the given splitter, which allows sequential get substrings using the next() method while is_done() is false.
 
constexpr bool starts_with (str_piece prefix) const noexcept
 Whether the string begins with the given substring.
 
constexpr bool starts_with_ia (str_piece prefix) const noexcept
 Whether the string begins with the given substring in a case-insensitive ASCII character.
 
bool starts_with_iu (str_piece prefix) const noexcept
 Whether the string starts with the given substring, case-insensitive Unicode characters of the first plane (<0xFFFF).
 
constexpr bool prefix_in (str_piece text) const noexcept
 Whether this string is the beginning of another string.
 
constexpr bool ends_with (str_piece suffix) const noexcept
 Whether the string ends with the specified substring.
 
constexpr bool ends_with_ia (str_piece suffix) const noexcept
 Whether the string ends with the specified substring in a case-insensitive ASCII character.
 
constexpr bool ends_with_iu (str_piece suffix) const noexcept
 Whether the string ends with the specified substring, case-insensitive Unicode characters of the first plane (<0xFFFF).
 
constexpr bool is_ascii () const noexcept
 Whether the string contains only ASCII characters.
 
upperred_only_ascii () const
 Get a copy of the string in uppercase ASCII characters.
 
lowered_only_ascii () const
 Get a copy of the string in lowercase ASCII characters.
 
upperred () const
 Get a copy of the string in upper case Unicode characters of the first plane (<0xFFFF).
 
lowered () const
 Get a copy of the string in lowercase Unicode characters of the first plane (<0xFFFF).
 
replaced (str_piece pattern, str_piece repl, size_t offset=0, size_t maxCount=0) const
 Get a copy of the string with occurrences of substrings replaced.
 
constexpr expr_replaces< K, N - 1, L - 1 > replace_init (T &&pattern, M &&repl) const
 Get a string expression that produces a string with replaced substrings given by string literals.
 
constexpr R trimmed () const
 Get a string with whitespace removed on the left and right.
 
trimmed (T &&pattern) const
 Get a string with the characters specified by the string literal removed from the left and right.
 
trimmed (str_piece pattern) const
 Get a string with characters specified by another string removed, left and right.
 
trimmed_left () const
 Get a string with whitespace removed on the left.
 
trimmed_left (T &&pattern) const
 Get a string with the characters specified by the string literal removed from the left.
 
trimmed_left (str_piece pattern) const
 Get a string with characters specified by another string removed from the left.
 
trimmed_right () const
 Get a string with whitespace removed on the right.
 
trimmed_right (T &&pattern) const
 Get a string with the characters specified by the string literal removed from the right.
 
trimmed_right (str_piece pattern) const
 Get a string with characters specified by another string removed to the right.
 
trimmed_with_spaces (T &&pattern) const
 Get a string with the characters specified by the string literal removed, as well as whitespace characters, left and right.
 
trimmed_with_spaces (str_piece pattern) const
 Get a string, removing characters specified by another string, as well as whitespace characters, left and right.
 
trimmed_left_with_spaces (T &&pattern) const
 Get a string with the characters specified by the string literal removed, as well as whitespace characters, left.
 
trimmed_left_with_spaces (str_piece pattern) const
 Get a string, removing characters specified by another string, as well as whitespace characters, left.
 
trimmed_right_with_spaces (T &&pattern) const
 Get a string with the characters specified by the string literal removed, as well as whitespace characters, right.
 
trimmed_right_with_spaces (str_piece pattern) const
 Get a string, removing characters specified by another string, as well as whitespace characters, right.
 
constexpr operator const K * () const noexcept
 Conversion operator to a null-terminated C string.
 
constexpr s_str_nt to_nts (size_t from=0) const
 Get simple_str_nt starting at the given character.
 
constexpr operator s_str_nt () const
 Convert to simple_str_nt.
 
constexpr const K * c_str () const
 Get a pointer to a constant character buffer of a string.
 

Static Public Member Functions

template<typename... T>
static my_type printf (const K *pattern, T &&... args)
 Get a string formatted with std::sprintf.
 
template<typename... T>
static my_type format (const FmtString< K, T... > &fmtString, T &&... args)
 Get a string formatted with std::format.
 
template<typename... T>
static my_type vformat (simple_str< K > fmtString, T &&... args)
 Get a string formatted with std::vformat.
 
static my_type join (const T &strings, s_str delimeter, bool tail=false, bool skip_empty=false, Args &&... args)
 Concatenate strings from the container into one string.
 
static my_type upperred_only_ascii_from (const From &f, Args &&... args)
 Create a string copy of the passed in uppercase ASCII characters.
 
static my_type lowered_only_ascii_from (const From &f, Args &&... args)
 Create a copy of the passed string in lowercase ASCII characters.
 
static my_type upperred_from (const From &f, Args &&... args)
 Create a copy of the passed string in uppercase Unicode characters of the first plane (<0xFFFF).
 
static my_type lowered_from (const From &f, Args &&... args)
 Create a copy of the passed string in lowercase Unicode characters of the first plane (<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)
 Create a copy of the passed string with substrings replaced.
 

Protected Member Functions

constexpr allocator_t & allocator ()
 Get the allocator.
 
constexpr void init_from_str_other (s_str other)
 Initialization from another string object.
 
constexpr void init_str_repeat (size_t repeat, s_str pattern)
 String repetition initialization.
 
constexpr void init_symb_repeat (size_t count, K pad)
 Character repetition initialization.
 
constexpr void init_str_expr (const StrExprForType< K > auto &expr)
 Initialization from a string expression.
 
void init_replaced (const From &f, s_str pattern, s_str repl, size_t offset=0, size_t maxCount=0)
 Initialization from string source with replacement.
 

Detailed Description

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

Immutable owning string class.

Template Parameters
K- character type.
Allocator- allocator type.

"shared" string. Class with small string optimization plus a shared immutable string buffer. Since the string buffer in this class is immutable, then: Firstly, there is no need to store the size of the allocated buffer; we will not change it anyway. Secondly, another type of string appears - a string initialized with a string literal. For it, we simply save a pointer to symbols and do not count references. Thus, initializing a string object in a program with a literal does not copy anything anywhere - neither into itself nor into dynamic memory, and does not cost more than initialization a raw pointer to a string, and even more optimal, since it also immediately substitutes the size, but does not calculate it at runtime.

stringa text = "text or very very very long text"; // costs nothing!
string copy = anotherString; // All you need to do is copy the bytes of the object itself, plus possibly one atomic increment

In the case of a shared buffer, the size of the string is still stored not in the shared buffer, but in each object. Because of SSO, there is still enough space, and you will have to go to memory less for the length. For example, calculating the sum of the lengths of strings in a vector will only go through the memory in the vector.

Sizes for x64:

  • for u8s - 24 bytes, stores strings up to 23 characters + 0
  • for u16s - 32 bytes, stores strings of up to 15 characters + 0
  • for u32s - 32 bytes, stores strings of up to 7 characters + 0

Constructor & Destructor Documentation

◆ sstring() [1/10]

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

Constructor for the empty string.

Parameters
...args- parameters for initializing the allocator.

◆ sstring() [2/10]

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

A constructor from another string object.

Parameters
other- another string object, simple_str.
...args- parameters for initializing the allocator.

◆ sstring() [3/10]

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
simstr::sstring< K, Allocator >::sstring ( size_t repeat,
s_str pattern,
Args &&... args )
inline

String repetition constructor.

Parameters
repeat- number of repetitions.
pattern- the line to be repeated.
...args- parameters for initializing the allocator.

◆ sstring() [4/10]

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
simstr::sstring< K, Allocator >::sstring ( size_t count,
K pad,
Args &&... args )
inline

Character repetition constructor.

Parameters
count- number of repetitions.
pad- the character to be repeated.
...args- parameters for initializing the allocator.

◆ sstring() [5/10]

template<typename K, Allocatorable Allocator = allocator_string>
template<typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
simstr::sstring< K, Allocator >::sstring ( const StrExprForType< K > auto & expr,
Args &&... args )
inlineconstexpr

Constructor from a string expression.

Parameters
expr- string expression.
...args- parameters for initializing the allocator.

The constructor queries the string expression length(), allocates memory of the required size, and calls the place() method to allocate result in buffer.

◆ sstring() [6/10]

template<typename K, Allocatorable Allocator = allocator_string>
template<StrType< K > From, typename... Args>
requires std::is_constructible_v<allocator_t, Args...>
simstr::sstring< K, Allocator >::sstring ( const From & f,
s_str pattern,
s_str repl,
size_t offset = 0,
size_t maxCount = 0,
Args &&... args )
inline

Constructor from string source with replacement.

Parameters
f- the string object from which the source string is taken.
pattern- substring to be replaced.
repl- the string to be replaced with.
offset- starting position for searching substrings.
maxCount- maximum number of replacements, 0 - no restrictions.
...args- parameters for initializing the allocator.

◆ sstring() [7/10]

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

String copy constructor.

Parameters
other- the string to be copied.

◆ sstring() [8/10]

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

Move constructor.

Parameters
other- the string to be moved.

◆ sstring() [9/10]

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

A move constructor from lstring with an sstring-compatible external buffer.

Parameters
src- the string to be moved.

If the characters in lstring are in an external allocated buffer, we just take the pointer to the buffer, it will suit us.

◆ sstring() [10/10]

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 )
inlineconstexpr

Initialize from a string literal.

Parameters
s- string literal.
...args- parameters for initializing the allocator.

In this case, we simply remember the pointer to the string and its length.

Member Function Documentation

◆ as_int()

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

Convert a string to a number of the given type.

Template Parameters
T- the desired number type.
CheckOverflow- check for overflow.
Base- the base of the number, from -1 to 36, except 1.
  • If 0: then tries to determine the base by the prefix 0[xX] as 16, 0 as 8, otherwise 10.
  • If -1: then tries to determine the base by prefixes:
    • 0 or 0[oO]: 8
    • 0[bB]: 2
    • 0[xX]: 16
  • in other cases 10.
SkipWs- skip whitespace characters at the beginning of the line.
AllowSign- whether the '+' sign is allowed before a number.
Returns
T - a number, the result of the transformation, how much it turned out, or 0 if it overflows.

◆ as_number() [1/2]

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

Convert string to double.

Parameters
t- the variable into which the result is written.

◆ as_number() [2/2]

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

Convert a string to an integer.

Template Parameters
T- number type, inferred from the argument.
Parameters
t- the variable into which the result is written.

◆ at()

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

Get the character at the given position.

Parameters
idx- symbol index. For negative values, it is counted from the end of the line.
Returns
K - character.

Does not check for line boundaries.

◆ c_str()

template<typename K, typename Impl>
const K * simstr::null_terminated< K, Impl >::c_str ( ) const
inlineconstexprinherited

Get a pointer to a constant character buffer of a string.

Returns
const K* - pointer to a constant string character buffer

◆ compare()

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

Compare strings character by character.

Parameters
o- another line.
Returns
<0 this string is less, ==0 - strings are equal, >0 - this string is greater.

◆ compare_ia()

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

Compare strings character by character and not case sensitive ASCII characters.

Parameters
text- another line.
Returns
<0 this string is less, ==0 - strings are equal, >0 - this string is greater.

◆ compare_iu()

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

Compare strings character by character without taking into account the case of Unicode characters of the first plane (<0xFFFF).

Parameters
text- another line.
Returns
<0 this string is less, ==0 - strings are equal, >0 - this string is greater.

◆ contains()

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

Whether the string contains the specified substring.

Parameters
pattern- the search string.
offset- from which position to start the search.
Returns
bool.

◆ copy_to()

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

Copy the string to the specified buffer.

The method adds \0 after the copied characters. Does not exceed buffer boundaries.

Parameters
buffer- pointer to buffer
bufSize- buffer size in characters.

◆ ends_with()

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

Whether the string ends with the specified substring.

Parameters
suffix- substring.

◆ ends_with_ia()

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

Whether the string ends with the specified substring in a case-insensitive ASCII character.

Parameters
suffix- substring.

◆ ends_with_iu()

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

Whether the string ends with the specified substring, case-insensitive Unicode characters of the first plane (<0xFFFF).

Parameters
suffix- substring.

◆ equal()

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

String comparison for equality.

Parameters
other- another line.
Returns
whether the strings are equal.

◆ equal_ia()

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

Whether a string is equal to another string, character-by-character-insensitive, of ASCII characters.

Parameters
text- another line.
Returns
whether the strings are equal.

◆ equal_iu()

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

Whether a string is equal to another string, character-by-character-insensitive, of the Unicode characters of the first plane (<0xFFFF).

Parameters
text- another line.
Returns
whether the strings are equal.

◆ 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
inlineconstexprnoexceptinherited

Find a character in this string.

Parameters
sis an optional character.
offset- from which position to start the search.
Returns
size_t - position of the found character, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the beginning of the first occurrence of a substring in this string.

Parameters
pattern- the search string.
offset- from which position to start the search.
Returns
size_t - the position of the beginning of the occurrence of the substring, or -1 if not found.

◆ 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
inlineconstexprinherited

Find all occurrences of a substring in this string.

Parameters
pattern- the substring to search for.
offset- search start position.
maxCount- the maximum number of occurrences to be processed, 0 - no restrictions.
Returns
std::vector<size_t> - a vector with the positions of the beginnings of the found occurrences.

◆ 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
inlineconstexprnoexceptinherited

Find the end of the occurrence of a substring in this string.

Parameters
pattern- the search string.
offset- from which position to start the search.
Returns
size_t - the position immediately after the occurrence of the substring, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the end of the last occurrence of a substring in this string.

Parameters
pattern- the search string.
offset- from which position to search in the opposite direction, -1 - from the very end.
Returns
size_t - the position immediately after the last occurrence of the substring, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the end of the last occurrence of a substring in this string, or the end of a string.

Parameters
pattern- the search string.
offset- from which position to search in the opposite direction, -1 - from the very end.
Returns
size_t - the position immediately after the last occurrence of the substring, or the length of the string if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the end of the first occurrence of a substring in this string, or the end of a string.

Parameters
pattern- the search string.
offset- from which position to start the search.
Returns
size_t - the position immediately after the occurrence of the substring, or the length of the string if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the first occurrence of a character not from the given character set.

Parameters
pattern- a string specifying the character set.
offset- search start position.
Returns
size_t - position of the found occurrence, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the first occurrence of a character from a given character set.

Parameters
pattern- a string specifying the set of characters to search for.
offset- search start position.
Returns
size_t - position of the found occurrence, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the first occurrence of a character from a given character set.

Parameters
pattern- a string specifying the set of characters to search for.
offset- search start position.
Returns
std::pair<size_t, size_t> - a pair from the position of the found occurrence and the number of the found character in the set, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the last occurrence of a character in this string.

Parameters
sis an optional character.
offset- from which position to search in the opposite direction, -1 - from the very end.
Returns
size_t - position of the found character, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the beginning of the last occurrence of a substring in this string.

Parameters
pattern- the search string.
offset- from which position to search in the opposite direction, -1 - from the very end.
Returns
size_t - the position of the beginning of the occurrence of the substring, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the last occurrence of a character not from the given character set.

Parameters
pattern- a string specifying the character set.
offset- search start position.
Returns
size_t - position of the found occurrence, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the last occurrence of a character from a given character set.

Parameters
pattern- a string specifying the set of characters to search for.
offset- search start position.
Returns
size_t - position of the found occurrence, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the last occurrence of a character from a given character set.

Parameters
pattern- a string specifying the set of characters to search for.
offset- search start position.
Returns
std::pair<size_t, size_t> - a pair from the position of the found occurrence and the number of the found character in the set, or -1 if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the beginning of the last occurrence of a substring in this string or the end of the string.

Parameters
pattern- the search string.
offset- from which position to search in the opposite direction, -1 - from the very end.
Returns
size_t - the position at which the substring begins, or the length of the string if not found.

◆ 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
inlineconstexprnoexceptinherited

Find a character in this string or the end of a string.

Parameters
sis an optional character.
offset- from which position to start the search.
Returns
size_t - position of the found character, or string length if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the beginning of the first occurrence of a substring in this string or the end of the string.

Parameters
pattern- the search string.
offset- from which position to start the search.
Returns
size_t - the position at which the substring begins, or the length of the string if not found.

◆ 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
inlineconstexprnoexceptinherited

Find the beginning of the first occurrence of a substring in this string or throw an exception.

Template Parameters
Exc- exception type.
Args...- types of parameters for constructing an exception, inferred from the arguments.
Parameters
pattern- the search string.
offset- from which position to start the search.
args- arguments for the exception constructor.
Returns
size_t - the position of the beginning of the substring occurrence, or throws an Exc exception if not found.

◆ 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
inlineconstexprinherited

Call a functor on all found occurrences of a substring in this string.

Parameters
opis a functor that takes a string.
pattern- the substring to search for.
offset- search start position.
maxCount- the maximum number of occurrences to be processed, 0 - no restrictions.

◆ 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

Get a string formatted with std::format.

Parameters
fmtString- constant format string.
...args- arguments for std::format.
Returns
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

Get the substring simple_str from position from to position to (not including it).

For performance reasons, the method does not check for line boundaries in any way, use in scenarios when you know for sure that these are positions inside the line and to >= from.

Parameters
from- starting position.
to- final position (not included in the result).
Returns
Substring, simple_str.

◆ init_from_str_other()

void simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::init_from_str_other ( s_str other)
inlineconstexprprotectedinherited

Initialization from another string object.

Parameters
other- another string object, simple_str.

◆ init_replaced()

void simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::init_replaced ( const From & f,
s_str pattern,
s_str repl,
size_t offset = 0,
size_t maxCount = 0 )
inlineprotectedinherited

Initialization from string source with replacement.

Parameters
f- the string object from which the source string is taken.
pattern- substring to be replaced.
repl- the string to be replaced with.
offset- starting position for searching substrings.
maxCount- maximum number of replacements, 0 - no restrictions.

◆ init_str_expr()

void simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::init_str_expr ( const StrExprForType< K > auto & expr)
inlineconstexprprotectedinherited

Initialization from a string expression.

Parameters
expr- string expression.

Queries the string expression length(), allocates memory of the required size, and calls the place() method to allocate result in buffer.

◆ init_str_repeat()

void simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::init_str_repeat ( size_t repeat,
s_str pattern )
inlineconstexprprotectedinherited

String repetition initialization.

Parameters
repeat- number of repetitions.
pattern- the line to be repeated.

◆ init_symb_repeat()

void simstr::str_storable< K, sstring< K, allocator_string >, allocator_string >::init_symb_repeat ( size_t count,
K pad )
inlineconstexprprotectedinherited

Character repetition initialization.

Parameters
count- number of repetitions.
pad- the character to be repeated.

◆ 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

Concatenate strings from the container into one string.

Parameters
strings- container with strings.
delimeter- delimiter added between lines.
tail- add a separator after the last line.
skip_empty- skip empty lines without adding a separator.
...args- parameters for initializing the allocator.

The function is used to merge a container of strings into one delimited string.

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)
Definition sstring.h:3180

It is worth noting that if the separator is known in advance, it is better to use the string expression e_join.

std::vector<ssa> strings = get_strings();
lstringa<200> line{e_join(strings, "/")};
constexpr auto e_join(const T &s, L &&d)
Get a string expression concatenating the strings in the container into a single string with the give...
Definition sstring.h:6062

In this case, the compiler can better optimize the string merging code.

◆ less_ia()

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

Whether a string is smaller than another string, character-by-character-insensitive, ASCII characters.

Parameters
text- another line.
Returns
whether the string is smaller.

◆ less_iu()

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

Whether a string is smaller than another string, character-by-character-insensitive, of the Unicode characters of the first plane (<0xFFFF).

Parameters
text- another line.
Returns
whether the string is smaller.

◆ lowered()

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

Get a copy of the string in lowercase Unicode characters of the first plane (<0xFFFF).

Template Parameters
R- the desired string type, by default the same whose method was called.
Returns
R - lowercase copy of the string.

◆ lowered_from()

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

Create a copy of the passed string in lowercase Unicode characters of the first plane (<0xFFFF).

Parameters
f- source string.
...args- parameters for initializing the allocator.

Case is changed by simplified tables, where one code_point is always changed to one code_point (but for UTF-8 it is possible that the length in code units will change).

◆ lowered_only_ascii()

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

Get a copy of the string in lowercase ASCII characters.

Template Parameters
R- the desired string type, by default the same whose method was called.
Returns
R - lowercase copy of the string.

◆ 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

Create a copy of the passed string in lowercase ASCII characters.

Parameters
f- source string.
...args- parameters for initializing the allocator.

◆ make_empty()

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

Make the string empty.

Returns
my_type& - a reference to yourself.

◆ 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

Get part of a string as "string chunk".

Parameters
from- number of characters from the beginning of the line. If the string size is exceeded, it will return an empty string.
len- the number of characters in the resulting "chunk". When going beyond the line, it will return everything up to the end of the line.
Returns
Substring, simple_str.

◆ operator const K *()

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

Conversion operator to a null-terminated C string.

Returns
const K* - pointer to the beginning of the line.

◆ operator s_str_nt()

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

Convert to simple_str_nt.

Returns
simple_str_nt.

◆ operator str_piece()

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

Convert itself to a "string chunk" that includes the entire string.

Returns
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

Get part of a string as "simple_str".

Parameters
from- number of characters from the beginning of the line.
len- the number of characters in the resulting "chunk".
Returns
Substring, simple_str.

If from is less than zero, then -from characters are counted from the end of the line towards the beginning. If len is less than or equal to zero, then count -len characters from the end of the line

"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

String comparison operator.

Parameters
other- another line.

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

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

Comparison operator between a string and a string literal.

Parameters
otheris a string literal.

◆ 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)
inlineconstexpr

Assignment operator to another string of type lstring.

Parameters
other- another string.
Returns
my_type& - a reference to yourself.

◆ operator=() [2/6]

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

String expression assignment operator.

Parameters
expr- string expression.
Returns
my_type& - a reference to yourself.

In a string expression, it is possible to refer to parts of the same string, since a copy is created first.

◆ 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)
inlineconstexpr

Assignment operator to a movable string of type lstring with a compatible buffer.

Parameters
other- another string.
Returns
my_type& - a reference to yourself.

◆ operator=() [4/6]

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

Assignment operator to another string of the same type.

Parameters
other- another string.
Returns
my_type& - a reference to yourself.

◆ operator=() [5/6]

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

Assignment operator to another string of a different type.

Parameters
other- another string.
Returns
my_type& - a reference to yourself.

◆ 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)
inlineconstexpr

String literal assignment operator.

Parameters
other- string character.
Returns
my_type& - a reference to yourself.

◆ operator==() [1/2]

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

Operator comparing strings for equality.

Parameters
other- another line.
Returns
whether the strings are equal.

◆ operator==() [2/2]

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

Operator for comparing a string and a string literal for equality.

Parameters
other- string literal.

◆ place()

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

Copy the string to the specified buffer.

The method assumes that the size of the allocated buffer is sufficient for the entire line, i.e. length() was previously requested. Does not add \0.

Parameters
ptr- pointer to the buffer.
Returns
pointer to the character after the end of the symbols placed in the buffer.

◆ prefix_in()

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

Whether this string is the beginning of another string.

Parameters
text- another string.

◆ 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

Get a string formatted with std::sprintf.

Parameters
pattern- format string.
...args- arguments for sprintf.
Returns
my_type.

On Windows, posix positional arguments are supported, using _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
inlineconstexprinherited

Get a string expression that produces a string with replaced substrings given by string literals.

Parameters
pattern- string literal, substring to be changed.
repl- string literal, substring to change to.
Returns
a string expression that replaces substrings.

◆ 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

Get a copy of the string with occurrences of substrings replaced.

Template Parameters
R- the desired string type, by default the same whose method was called.
Parameters
pattern- the substring to search for.
repl- the string to replace with.
offset- starting position of the search.
maxCount- maximum number of replacements, 0 - no restrictions.
Returns
R a string of the given type, by default the same whose method was called.

◆ 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

Create a copy of the passed string with substrings replaced.

Parameters
f- source string.
pattern- substring to be replaced.
repl- the string to be replaced with.
offset- starting position for searching substrings.
maxCount- maximum number of replacements, 0 - no restrictions.
...args- parameters for initializing the allocator.

◆ size()

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

The size of the string in characters.

Returns
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
inlineconstexprinherited

Split a string into substrings using a given delimiter.

Template Parameters
T- container type for the result.
Parameters
delimeter- delimiter.
offset- the position to start searching for the separator.
Returns
T - container with the result.

◆ 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
inlineconstexprinherited

Split a string into parts at a given delimiter, possibly applying a functor to each substring.

Template Parameters
T- type of container for folding substrings.
Parameters
delimeter- substring delimiter.
beforeFunc- a functor to apply to the found substrings, before placing them in the result.
offset- the position to start searching for the separator.
Returns
T - result.

For each substring found, if the functor can accept it, the functor is called, and the substring is assigned to the result of the functor. Next, the substring tries to be added to the result, calling one of its methods - emplace_back, push_back, operator[]. If none of this method no, nothing is done, just calling the functor. operator[] tries to apply if the result can have a size via std::size and we do not exceed this size. At the same time, if the found substring turns out to match the entire string, the result is attempted place not a substring, but the entire string object, which allows, for example, to effectively copy sstring.

◆ splitter()

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

Retrieve a Splitter object by the given splitter, which allows sequential get substrings using the next() method while is_done() is false.

Parameters
delimeter- delimiter.
Returns
Splitter<K>.

◆ starts_with()

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

Whether the string begins with the given substring.

Parameters
prefix- substring.

◆ starts_with_ia()

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

Whether the string begins with the given substring in a case-insensitive ASCII character.

Parameters
prefix- substring.

◆ starts_with_iu()

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

Whether the string starts with the given substring, case-insensitive Unicode characters of the first plane (<0xFFFF).

Parameters
prefix- substring.

◆ 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
inlineconstexprinherited

Get part of a string with an object of the same type to which the method is applied, similar to mid.

Parameters
from- number of characters from the beginning of the line. If the string size is exceeded, it will return an empty string.
len- the number of characters in the resulting "chunk". When going beyond the line, it will return everything up to the end of the line.
Returns
A string of the same type to which the method is applied.

◆ strcmp()

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

Compare with C-string character by character.

Parameters
text- another line.
Returns
<0 this string is less, ==0 - strings are equal, >0 - this string is greater.

◆ substr()

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

Get a substring. Works similarly to operator(), only the result is the same type as the method applied to.

Parameters
from- number of characters from the beginning of the line. If less than zero, it is counted from the end of the line towards the beginning.
len- the number of characters in the resulting "chunk". If less than or equal to zero, then count len ​​characters from the end of the line.
Returns
my_type - a substring, an object of the same type to which the method is applied.

◆ to_double()

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

Convert string to double.

Returns
std::optional<double>.

◆ to_double_hex()

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

Convert string in hex form to double.

Returns
std::optional<double>.

◆ to_int()

convert_result< T > simstr::str_algs< K, simple_str< K >, sstring< K, allocator_string >, Mutable >::to_int ( ) const
inlineconstexprnoexceptinherited

Convert a string to a number of the given type.

Template Parameters
T- the desired number type.
CheckOverflow- check for overflow.
Base- the base of the number, from -1 to 36, except 1.
  • If 0: then tries to determine the base by the prefix 0[xX] as 16, 0 as 8, otherwise 10
  • If -1: then tries to determine the base by prefixes:
    • 0 or 0[oO]: 8
    • 0[bB]: 2
    • 0[xX]: 16
  • in other cases 10.
SkipWs- skip whitespace characters at the beginning of the line. All characters with ASCII codes <= 32 are skipped.
AllowSign- whether the '+' sign is allowed before a number.
Returns
convert_result<T> - a tuple of the received number, the success of the conversion and the number of characters processed.

◆ to_nts()

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

Get simple_str_nt starting at the given character.

Parameters
from- position of the starting character, default 0.
Returns
simple_str_nt,

◆ to_str()

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

Convert itself to a "string chunk" that includes the entire string.

Returns
str_piece.

◆ to_string()

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

Convert to std::string.

Returns
std::basic_string<K>.

◆ to_sv()

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

Convert to std::string_view.

Returns
std::basic_string_view<K>.

◆ trimmed() [1/3]

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

Get a string with whitespace removed on the left and right.

Template Parameters
R- desired string type, default simple_str.
Returns
R - a string with whitespace characters removed at the beginning and end.

◆ trimmed() [2/3]

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

Get a string with characters specified by another string removed, left and right.

Template Parameters
R- desired string type, default simple_str.
Parameters
pattern- a string specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the pattern removed at the beginning and at the end.

◆ trimmed() [3/3]

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

Get a string with the characters specified by the string literal removed from the left and right.

Template Parameters
R- desired string type, default simple_str.
Parameters
patternis a string literal specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the literal removed at the beginning and at the end.

◆ trimmed_left() [1/3]

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

Get a string with whitespace removed on the left.

Template Parameters
R- desired string type, default simple_str.
Returns
R - a string with leading whitespace characters removed.

◆ trimmed_left() [2/3]

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

Get a string with characters specified by another string removed from the left.

Template Parameters
R- desired string type, default simple_str.
Parameters
pattern- a string specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the pattern removed at the beginning.

◆ trimmed_left() [3/3]

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

Get a string with the characters specified by the string literal removed from the left.

Template Parameters
R- desired string type, default simple_str.
Parameters
patternis a string literal specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the literal removed at the beginning.

◆ 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

Get a string, removing characters specified by another string, as well as whitespace characters, left.

Template Parameters
R- desired string type, default simple_str.
Parameters
pattern- a string specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the pattern removed at the beginning and whitespace characters.

◆ 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

Get a string with the characters specified by the string literal removed, as well as whitespace characters, left.

Template Parameters
R- desired string type, default simple_str.
Parameters
patternis a string literal specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the literal removed at the beginning and whitespace characters.

◆ trimmed_right() [1/3]

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

Get a string with whitespace removed on the right.

Template Parameters
R- desired string type, default simple_str.
Returns
R - a string with whitespace characters removed at the end.

◆ trimmed_right() [2/3]

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

Get a string with characters specified by another string removed to the right.

Template Parameters
R- desired string type, default simple_str.
Parameters
pattern- a string specifying the characters that will be trimmed.
Returns
R - a string with characters contained in the pattern removed at the end.

◆ trimmed_right() [3/3]

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

Get a string with the characters specified by the string literal removed from the right.

Template Parameters
R- desired string type, default simple_str.
Parameters
patternis a string literal specifying the characters that will be trimmed.
Returns
R - a string with characters contained in the literal removed at the end.

◆ 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

Get a string, removing characters specified by another string, as well as whitespace characters, right.

Template Parameters
R- desired string type, default simple_str.
Parameters
pattern- a string specifying the characters that will be trimmed.
Returns
R - a string with characters contained in the template removed at the end and whitespace characters.

◆ 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

Get a string with the characters specified by the string literal removed, as well as whitespace characters, right.

Template Parameters
R- desired string type, default simple_str.
Parameters
patternis a string literal specifying the characters that will be trimmed.
Returns
R - a string with characters contained in the literal removed at the end and whitespace characters.

◆ 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

Get a string, removing characters specified by another string, as well as whitespace characters, left and right.

Template Parameters
R- desired string type, default simple_str.
Parameters
pattern- a string specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the pattern removed at the beginning and at the end and whitespace characters.

◆ 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

Get a string with the characters specified by the string literal removed, as well as whitespace characters, left and right.

Template Parameters
R- desired string type, default simple_str.
Parameters
patternis a string literal specifying the characters that will be trimmed.
Returns
R - a string with the characters contained in the literal removed at the beginning and at the end and whitespace characters.

◆ upperred()

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

Get a copy of the string in upper case Unicode characters of the first plane (<0xFFFF).

Template Parameters
R- the desired string type, by default the same whose method was called.
Returns
R - uppercase copy of the string.

◆ upperred_from()

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

Create a copy of the passed string in uppercase Unicode characters of the first plane (<0xFFFF).

Parameters
f- source string.
...args- parameters for initializing the allocator.

Case is changed by simplified tables, where one code_point is always changed to one code_point (but for UTF-8 it is possible that the length in code units will change).

◆ upperred_only_ascii()

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

Get a copy of the string in uppercase ASCII characters.

Template Parameters
R- the desired string type, by default the same whose method was called.
Returns
R - uppercase copy of the string.

◆ upperred_only_ascii_from()

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

Create a string copy of the passed in uppercase ASCII characters.

Parameters
f- source string.
...args- parameters for initializing the allocator.

◆ 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

Get a string formatted with std::vformat.

Parameters
fmtString- format string.
...args- arguments for std::vformat.
Returns
my_type.

The documentation for this class was generated from the following file: