This class is the base class of all ALib string classes. Objects of this type represent character strings whose data is allocated outside their scope. In particular, the class does not allocate a character array buffer to store and manipulate string data.
Once constructed, objects of this class are immutable, except for the possibility to assign a complete new object value. This means there is no interface to change the single two data members buffer and length. The immutable nature of this type is lifted by derived types. While class Substring allows changing the start and length of the string represented, class AString holds a copy of the data and consequently allows modifying the string stored.
TChar | The character type of this string. Alias names for specializations along the different character types are provided in namespace alib with type definitions String, NString, WString, XString, ComplementString, and StrangeString. |
Definition at line 83 of file string.inl.
Inner Type Index: | |
class | TRandomAccessIterator |
Public Type Index: | |
using | size_type = integer |
The type defining sizes of strings. | |
using | value_type = TChar |
Exposes template parameter TChar to the outer world in a std compatible way. | |
Public Method Index: | |
constexpr | TString () noexcept=default |
template<typename T> requires alib::characters::IsImplicitArraySource<T, TChar> | |
constexpr | TString (const T &src) noexcept |
template<typename T> requires alib::characters::IsExplicitArraySource<T, TChar> | |
constexpr | TString (const T &src) noexcept |
constexpr | TString (const TChar *pBuffer, integer pLength) noexcept |
constexpr | TString (const TString &) noexcept=default |
Defaulted copy constructor. | |
TString (const_iterator &start, const_iterator &end) | |
constexpr | TString (lang::IsNullptr auto const &) noexcept |
Constructor accepting nullptr . Constructs a nulled string. | |
template<typename T> requires alib::characters::IsMutableArraySource<T, TChar> | |
constexpr | TString (T &src) noexcept |
template<typename TAllocator> requires alib::lang::IsAllocator<TAllocator> | |
TString (TAllocator &allocator, const TString< TChar > ©) | |
constexpr | TString (TString &&) noexcept=default |
Defaulted move constructor. | |
template<typename T> requires ( alib::characters::IsImplicitArrayCast<T, TChar> && !alib::strings::NoAutoCastTraits< TString<TChar>, characters::Policy::Implicit, std::remove_cv_t<T> >::value ) | |
constexpr | operator T () const |
template<typename T> requires ( alib::characters::IsExplicitArrayCast<T, TChar> && !alib::strings::NoAutoCastTraits< TString<TChar>, characters::Policy::ExplicitOnly, std::remove_cv_t<T> >::value ) | |
constexpr | operator T () const |
constexpr TString & | operator= (const TString &) noexcept=default |
constexpr TString & | operator= (TString &&) noexcept=default |
Buffer Access, Length, and State | |
constexpr const TChar * | Buffer () const |
constexpr integer | Length () const |
integer | WStringLength () const |
constexpr bool | IsNull () const |
constexpr bool | IsNotNull () const |
constexpr bool | IsEmpty () const |
constexpr bool | IsNotEmpty () const |
template<typename TCheck = CHK> | |
TString< TChar > | Substring (integer regionStart, integer regionLength=MAX_LEN) const |
Character Access | |
template<typename TCheck = CHK> | |
TChar | CharAt (integer idx) const |
template<typename TCheck = CHK> | |
TChar | CharAtStart () const |
template<typename TCheck = CHK> | |
TChar | CharAtEnd () const |
TChar | operator[] (integer idx) const |
Hashing | |
std::size_t | Hashcode () const |
std::size_t | HashcodeIgnoreCase () const |
Comparison Methods | |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
bool | Equals (const TString< TChar > &rhs) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
int | CompareTo (const TString< TChar > &rhs) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
int | CompareTo (const TString &rhs, integer rhsRegionStart, integer rhsRegionLength=MAX_LEN) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
int | CompareTo (const TString &rhs, integer rhsRegionStart, integer rhsRegionLength, integer regionStart, integer regionLength=MAX_LEN) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
bool | ContainsAt (const TString &needle, integer pos) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
bool | StartsWith (const TString &needle) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
bool | EndsWith (const TString &needle) const |
Search | |
template<typename TCheck = CHK> | |
integer | IndexOf (TChar needle, integer startIdx=0) const |
template<typename TCheck = CHK> | |
integer | IndexOf (TChar needle, integer regionStart, integer regionLength) const |
integer | IndexOfOrLength (TChar needle) const |
template<typename TCheck = CHK> | |
integer | IndexOfOrLength (TChar needle, integer startIdx) const |
template<typename TCheck = CHK> | |
integer | LastIndexOf (TChar needle, integer startIndex=MAX_LEN) const |
template<lang::Inclusion TInclusion, typename TCheck = CHK> | |
integer | IndexOfAny (const TString &needles, integer startIdx=0) const |
template<lang::Inclusion TInclusion, typename TCheck = CHK> | |
integer | LastIndexOfAny (const TString &needles, integer startIdx=MAX_LEN) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
integer | IndexOf (const TString &needle, integer startIdx=0, integer endIdx=strings::MAX_LEN) const |
template<typename TCheck = CHK> | |
integer | IndexOfFirstDifference (const TString &needle, lang::Case sensitivity=lang::Case::Sensitive, integer startIdx=0) const |
integer | IndexOfSegmentEnd (TChar opener, TChar closer, integer idx) const |
template<typename TCheck = CHK> | |
integer | CountChar (TChar needle, integer startPos=0) const |
template<typename TCheck = CHK> | |
integer | CountChar (TChar needle, TChar omit, integer startPos) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
integer | Count (const TString &needle, integer startPos=0) const |
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive> | |
integer | Count (const TString &needle, const TString &omit, integer startPos=0) const |
Parsing Numbers | |
ALIB_DLL uint64_t | ParseDecDigits (integer startIdx=0, integer *newIdx=nullptr) const |
ALIB_DLL int64_t | ParseInt (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const |
int64_t | ParseInt (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const |
int64_t | ParseInt (integer *newIdx) const |
int64_t | ParseInt (integer startIdx, integer *newIdx) const |
ALIB_DLL uint64_t | ParseDec (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const |
uint64_t | ParseDec (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const |
uint64_t | ParseDec (integer *newIdx) const |
uint64_t | ParseDec (integer startIdx, integer *newIdx) const |
ALIB_DLL uint64_t | ParseBin (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const |
uint64_t | ParseBin (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const |
uint64_t | ParseBin (integer *newIdx) const |
uint64_t | ParseBin (integer startIdx, integer *newIdx) const |
ALIB_DLL uint64_t | ParseHex (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const |
uint64_t | ParseHex (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const |
uint64_t | ParseHex (integer *newIdx) const |
uint64_t | ParseHex (integer startIdx, integer *newIdx) const |
ALIB_DLL uint64_t | ParseOct (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const |
uint64_t | ParseOct (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const |
uint64_t | ParseOct (integer *newIdx) const |
uint64_t | ParseOct (integer startIdx, integer *newIdx) const |
ALIB_DLL double | ParseFloat (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const |
double | ParseFloat (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const |
double | ParseFloat (integer *newIdx) const |
double | ParseFloat (integer startIdx, integer *newIdx) const |
Conversion | |
integer | CopyTo (TChar *dest) const |
template<typename TAllocator> requires alib::lang::IsAllocator<TAllocator> | |
void | Allocate (TAllocator &allocator, const TString< TChar > ©) |
template<typename TAllocator> requires alib::lang::IsAllocator<TAllocator> | |
void | Free (TAllocator &allocator) |
std::iterator_traits | |
const_iterator | begin () const |
const_iterator | cbegin () const |
const_iterator | end () const |
const_iterator | cend () const |
const_reverse_iterator | rbegin () const |
const_reverse_iterator | rend () const |
const_reverse_iterator | crbegin () const |
const_reverse_iterator | crend () const |
size_type | size () const |
Protected Field Index: | |
const TChar * | buffer |
integer | length |
Protected Method Index: | |
template<lang::Case TSensitivity = lang::Case::Sensitive> | |
ALIB_DLL integer | indexOfString (const TString &needle, integer startIdx, integer endIdx) const |
using alib::strings::TString< TChar >::const_iterator = TRandomAccessIterator<const TChar> |
The constant iterator exposed by this character container. A Mutable version is found only in descendant classes (e.g., AString).
Definition at line 2145 of file string.inl.
using alib::strings::TString< TChar >::const_reverse_iterator = std::reverse_iterator<const_iterator> |
The constant reverse iterator exposed by this character container. A Mutable version is found only in descendant classes (e.g., AString).
Definition at line 2149 of file string.inl.
using alib::strings::TString< TChar >::size_type = integer |
The type defining sizes of strings.
Definition at line 90 of file string.inl.
using alib::strings::TString< TChar >::value_type = TChar |
Exposes template parameter TChar to the outer world in a std
compatible way.
Definition at line 87 of file string.inl.
|
protected |
Pointer to an array of constant character values. This array holds the string that an instance of this type is representing.
Read access to this field is granted with the method Buffer.
For technical reasons, this documentation unfortunately omits the important fact that this field is part of an anonymous union declared like this:
union { const TChar* buffer; TChar* vbuffer; };
Hence, the field can also be interpreted as a pointer to an array of non-constant character values. Derived classes might use the sibling version vbuffer to modify the contents of the string if it is assured that such memory is writable. This is, for example, done extensively by the implementation of class AString.
Definition at line 133 of file string.inl.
|
protected |
The length of the character string represented. Read access to this field is granted with the method Length.
Definition at line 138 of file string.inl.
|
constexprdefaultnoexcept |
|
inlineconstexprnoexcept |
Constructor accepting a pointer to a character array and a string length.
pBuffer | Pointer to the start of the character string to represent. |
pLength | The length of the character string to represent. |
Definition at line 168 of file string.inl.
|
inlineconstexprnoexcept |
Constructor accepting nullptr
. Constructs a nulled string.
Definition at line 174 of file string.inl.
|
inlineconstexprnoexcept |
Templated implicit constructor accepting a const
reference to an object of a type that satisfies the concept IsImplicitArraySource.
Custom types can be enabled for this constructor by specializing the traits-type ArrayTraits, which is used for both; the implementation of the concept, and the implementation of this constructor itself.
T | The type of the given src. Requires satisfying the concept IsImplicitArraySource. Deduced by the compiler. |
src | The source of the string data to copy. |
Definition at line 191 of file string.inl.
|
inlineexplicitconstexprnoexcept |
Templated explicit constructor accepting a const
reference to an object of a type that satisfies the concept IsExplicitArraySource.
Custom types can be enabled for this constructor by specializing the traits-type ArrayTraits, which is used for both; the implementation of the concept, and the implementation of this constructor itself.
T | The type of the given src. Requires satisfying the concept IsExplicitArraySource. Deduced by the compiler. |
src | The source of the string data to copy. |
Definition at line 209 of file string.inl.
|
inlineexplicitconstexprnoexcept |
Templated explicit constructor accepting a mutable reference to an object of a type that satisfies the concept IsMutableArraySource.
Custom types can be enabled for this constructor by specializing the traits-type ArrayTraits, which is used for both; the implementation of the concept, and the implementation of this constructor itself.
T | The type of the given src. Requires satisfying the concept IsMutableArraySource. Deduced by the compiler. |
src | The source of the string data to copy. |
Definition at line 227 of file string.inl.
|
inline |
Constructor which allocates memory, copies the given string's contents, and lets this string represent this new character array.
Note that it is up to the using code to duly deallocate the memory, because the destructor of this type does not do so.
TAllocator | The type of the given allocator, as prototyped with Allocator. Requires satisfying the concept IsAllocator. Deduced by the compiler. |
allocator | The allocator to use. |
copy | The string to copy to the new memory allocated. |
Definition at line 245 of file string.inl.
|
inline |
Constructs this string using start and end iterators.
start | An iterator referencing the start of the string. |
end | An iterator referencing the end of the string. |
Definition at line 2200 of file string.inl.
|
inline |
Adjusts a region given as in/out parameters, to fit to this object's range [0..length].
[in,out] | regionStart | The proposed region start which might get adjusted to fit to range [0..length]. |
[in,out] | regionLength | The proposed region length which might get adjusted to fit to range [0..length]. |
true
, if the adjusted region is empty. Definition at line 1919 of file string.inl.
|
inline |
Sets this String to a copy of the given string, allocated in given allocator.
TAllocator | The type of the given allocator, as prototyped with Allocator. Deduced by the compiler. |
allocator | The allocator to use. |
copy | The string to copy to the new memory allocated. |
Definition at line 1870 of file string.inl.
|
inline |
Returns an iterator pointing to a constant character at the start of this string.
Definition at line 2158 of file string.inl.
|
inlineconstexpr |
Returns a pointer to the first character of the string we are representing.
Definition at line 313 of file string.inl.
|
inline |
Returns an iterator pointing to a constant character at the start of this string.
Definition at line 2162 of file string.inl.
|
inline |
Returns an iterator pointing behind this string.
Definition at line 2170 of file string.inl.
|
inline |
Retrieves the character at the given index. A range check is performed. If this fails, '\0'
is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
idx | The index of the character to read. |
Definition at line 421 of file string.inl.
|
inline |
Retrieves the last character. In the case of an empty string, '\0' is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no check for an empty or nulled object is performed. |
Definition at line 460 of file string.inl.
|
inline |
Retrieves the first character. In the case of an empty or nulled string, '\0' is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no check for an empty string object is performed. |
Definition at line 440 of file string.inl.
|
inline |
Compares a region of this object with a region of another string-like object.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no check for a nulled comparison object is performed and this string must not be empty. Furthermore, no check is performed whether the given regions fit to this object respectively the other region to the object given with parameter rhs. This also means that the default value of regionLength must not be used in this case. |
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
rhs | The string to compare this string with. |
rhsRegionStart | The start of the region in rhs to compare this object with. |
rhsRegionLength | The length of the region in rhs to compare this object with. |
regionStart | The start of the region in this object to compare with |
regionLength | The length of the region in this object to compare with. Defaults to MAX_LEN. |
Definition at line 690 of file string.inl.
|
inline |
Compares this string with a region of another string-like object.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no check for a nulled comparison object is performed and this string must not be empty. Furthermore, no check is performed whether the given region fits to parameter rhs. This also means that the default value must not be used with TCheck==NC. |
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
rhs | The string to compare this string with. |
rhsRegionStart | The start of the region in rhs to compare this object with. |
rhsRegionLength | The length of the region in rhs to compare this object with. Defaults to MAX_LEN. |
Definition at line 644 of file string.inl.
|
inline |
Compares this string with a string-like object.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no check for a nulled object (this) is performed and this string must not be of zero length (while rhs might be of zero length). |
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
rhs | The object to compare. |
Definition at line 596 of file string.inl.
|
inline |
Returns true
, if the contents of the given string-like object is found at the given position.
false
is returned. (This check only done if TCheck equals CHK.)true
is returned.TCheck | Defaults to CHK, which is the normal invocation mode. If <false> is given, no check on parameter pos is performed and needle must not be nulled. |
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
needle | The string to compare with. If it is empty, true is returned. |
pos | The position to search for needle. |
true
if needle is found at the given position. False otherwise. Definition at line 732 of file string.inl.
|
inline |
Copies this string's contents into a given character buffer. It is the caller's responsibility that dest is large enough, write-enabled, etc.
dest | The destination buffer. |
Definition at line 1850 of file string.inl.
|
inline |
Counts all occurrences of needle, unless followed by omit, starting at startPos to the end of the string.
For empty strings needle, 0
is returned. Also, for empty strings omit, 0
is returned.
TSensitivity | Case sensitivity of the comparison. Optional and defaults to Case::Sensitive. |
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, parameter startPos must be valid and needle must not be empty. |
needle | The string to search for. |
omit | Omit occurrence if the given string follows. |
startPos | The index to start the counting. Optional and defaults to 0 . |
Definition at line 1340 of file string.inl.
|
inline |
Counts all occurrences of needle from startPos to the end of the string.
For empty strings needle, 0
is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, parameter startIdx must be valid and needle must not be empty. |
TSensitivity | Case sensitivity of the comparison. Optional and defaults to Case::Sensitive. |
needle | The string to search for. |
startPos | The index to start the counting. Optional and defaults to 0 . |
Definition at line 1293 of file string.inl.
|
inline |
Counts all occurrences of character needle in the range from startPos to the end of the string.
For empty strings needle, 0
is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
needle | The character to search for. |
startPos | The index to start the counting. Optional and defaults to 0 . |
Definition at line 1206 of file string.inl.
|
inline |
Counts all occurrences of character needle, unless followed by character omit in the range from startPos to the end of the string.
For empty strings needle, 0
is returned. Also, for empty strings omit, 0
is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
needle | The character to search for. |
omit | Omit occurrence if the given character follows. |
startPos | The index to start the counting. |
Definition at line 1247 of file string.inl.
|
inline |
Returns a reverse iterator pointing to a constant character at the end of this string.
Definition at line 2182 of file string.inl.
|
inline |
Returns a reverse iterator pointing before the start of this string.
Definition at line 2186 of file string.inl.
|
inline |
Returns an iterator pointing behind this string.
Definition at line 2166 of file string.inl.
|
inline |
Returns true
, if this string ends with the string found in parameter needle. If needle is empty, true
is returned.
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
needle | The string to compare the end of this string with. If nulled or empty, true is returned. |
true
if needle is found at the end of this, false
otherwise. Definition at line 805 of file string.inl.
|
inline |
Compares this string with a string-like object.
true
is returned if this and the compared string are nulled or empty. If only one is nulled or empty, false
is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no check for a nulled is performed on this string as well as on rhs. |
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
rhs | The object to compare. |
true
, if the contents of this string and the string representation of the given rhs are equal. Definition at line 541 of file string.inl.
|
inline |
Deallocates this String's memory in allocator and sets this instance to nulled.
TAllocator | The type of the given allocator, as prototyped with Allocator. Deduced by the compiler. |
allocator | The allocator to use. |
Definition at line 1899 of file string.inl.
std::size_t alib::strings::TString< TChar >::Hashcode | ( | ) | const |
Computes a hash number for the contained string.
std::hash<std::string_view<TChar>>
. Otherwise a compatible hash function is used. std::size_t alib::strings::TString< TChar >::HashcodeIgnoreCase | ( | ) | const |
Computes a hash number for the contained string converted to upper case letters.
|
inline |
Searches the given string-like object in this string.
If needle is empty, the adjusted value of startIdx is returned.
TSensitivity | Case sensitivity of the comparison. Optional and defaults to Case::Sensitive. |
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, parameter needle must not be empty and startIdx must be in the range of [0 ... Length() - needle.Length()]. This also implies that this string must not be empty. |
needle | The string to search for. |
startIdx | The index to start the search at. Optional and defaults to 0 . |
endIdx | The index where the search ends. Precisely, the index of the first character that is not found. Defaults to MAX_LEN. |
-1
is returned. Otherwise the index of the first occurrence of needle. Definition at line 1104 of file string.inl.
|
inline |
Searches a character within a region of this.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
needle | The character to search for. |
regionStart | The start of the region to search the character in. |
regionLength | The length of the region to search the character in. |
-1
if the character needle is not found. Otherwise the index of its first occurrence. Definition at line 876 of file string.inl.
|
inline |
Searches a character starting from a given position.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
needle | The character to search for. |
startIdx | The index in this to start searching the character. Defaults to 0 . |
-1
if the character needle is not found. Otherwise the index of its first occurrence. Definition at line 844 of file string.inl.
|
inline |
Returns the index of the first character which is included, respectively not included in a set of characters given as a string-like object.
std::strpbrk()
respectively std::strspn()
) is available. So, if performance is important and repetitive calls are performed, it might be advisable to hold this string and the needles in a zero-terminated string buffer, for example in an AString.This method searches forwards. For backwards search, see LastIndexOf.
TInclusion | Denotes whether the search returns the first index that holds a value that is included or that is not excluded in the set of needle characters. |
TCheck | Defaults to CHK, which is the normal invocation mode. If <false> is given, no parameter checks are performed. |
needles | Pointer to a zero-terminated set of characters to be taken into account. |
startIdx | The index to start the search at. If the given value is less than 0, it is set to 0. If it exceeds the length of the string, the length of the string is returned. Defaults to 0. |
Definition at line 1019 of file string.inl.
|
inline |
Searches the first difference of a substring of this string and a string-like object given with parameter needle. If no difference is found, then the index of the first character behind the substring is returned.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
needle | The substring to search for. |
sensitivity | Letter case sensitivity of the comparison. Optional and defaults to Case::Sensitive. |
startIdx | The index in this string to start the comparison with needle. Optional and defaults to 0 . |
Definition at line 1149 of file string.inl.
|
inline |
Like IndexOf but in case the character is not found, this method returns the length of this string instead of -1
. Depending on the invocation context, the choice for the right version of this method may lead to shorter and more efficient code.
needle | The character to search for. |
Definition at line 912 of file string.inl.
|
inline |
Like IndexOf but in case the character is not found, this method returns the length of this string instead of -1
. Depending on the invocation context, the choice for the right version of this method may lead to shorter and more efficient code.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
needle | The character to search for. |
startIdx | The index in this to start searching the character. |
Definition at line 933 of file string.inl.
integer alib::strings::TString< TChar >::IndexOfSegmentEnd | ( | TChar | opener, |
TChar | closer, | ||
integer | idx ) const |
The method searches the next matching closer-character while taking nested pairs of opener and closer characters into account.
Before the invocation of this method, the initial opener has to be known already and the given idx has to point to the first character behind the opener, where the search for an according closer is to be started.
This method is useful to scan a string for pairs of opening and closing brackets, while the found segment may contain nested pairs of the same brackets.
opener | The character that represents the opening bracket, e.g., '{' . |
closer | The character that represents the closing bracket, e.g., '}' . |
idx | Index pointing to first character behind the (first) opener. |
|
protected |
Implementation of the substring search function.
1
. TSensitivity | The letter case sensitivity of the search. |
needle | The substring to search. |
startIdx | The start index of the search. |
endIdx | The index where the search ends. Precisely, the index of the first character that is not found. |
-1
if not found.
|
inlineconstexpr |
Returns true
if this string is of zero length. Note that a nulled string is also considered empty.
true
if the actual length equals zero. Definition at line 367 of file string.inl.
|
inlineconstexpr |
Returns true
if this string has a length of 1
or more.
true
if the actual length does not equal zero. Definition at line 371 of file string.inl.
|
inlineconstexpr |
Returns true
if field buffer does not equal nullptr
, false
otherwise.
Definition at line 357 of file string.inl.
|
inlineconstexpr |
Returns true
if field buffer equals nullptr
, false
otherwise. Note that a nulled string is also considered empty.
true
if no buffer is allocated. Definition at line 352 of file string.inl.
|
inline |
Searches a character starting backwards from the end or a given start index.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. Consequently, in this case, optional parameter startIndex must be provided. |
needle | The character to search for. |
startIndex | The index within this string to start searching the character. Defaults to MAX_LEN. |
-1
if the character needle is not found. Otherwise, the index of its last occurrence. Definition at line 967 of file string.inl.
|
inline |
Returns the index of the last character which is included, respectively not included in set of characters given as a string-like object.
This method searches backwards starting at the given index. For forwards search, see IndexOfAny.
TInclusion | Denotes whether the search returns the first index that holds a value that is included or that is not excluded in the set of needle characters. |
TCheck | Defaults to CHK, which is the normal invocation mode. If <false> is given, no parameter checks are performed. |
needles | Pointer to a zero-terminated set of characters to be searched for. |
startIdx | The index to start the search at. The value is cropped to be in the bounds of 0 and the length of this object minus one. Defaults to MAX_LEN. |
Definition at line 1063 of file string.inl.
|
inlineconstexpr |
Returns the length of the string that this object represents.
Definition at line 318 of file string.inl.
|
inlineconstexpr |
Templated implicit cast operator
constructing an instance of type T from this string instance. This operator requires the type T satisfying the concept IsImplicitArrayCast.
Custom types can be enabled for this operator by specializing the traits-type ArrayTraits, which is used for both; the implementation of the concept, and the implementation of this operator itself.
T | The type to implicitly cast this instance to. Requires satisfying the concept IsImplicitArrayCast. Deduced by the compiler. |
Definition at line 279 of file string.inl.
|
inlineexplicitconstexpr |
Templated explicit cast operator
constructing an instance of type T from this string instance. This operator requires the type T satisfying the concept IsExplicitArrayCast.
Custom types can be enabled for this operator by specializing the traits-type ArrayTraits, which is used for both; the implementation of the concept, and the implementation of this operator itself.
T | The type to explicitly cast this instance to. Deduced by the compiler. |
Definition at line 300 of file string.inl.
|
constexprdefaultnoexcept |
Defaulted copy assignment operator.
this
instance.
|
constexprdefaultnoexcept |
Defaulted move assignment operator.
this
instance.
|
inline |
Reads a character at a given index.
const
) version of this operator, returning a a reference to the character to provide write access. Such reference to a character could not be given if the index was out of range. This way, a check in the derived type could likewise not be implemented.false>
. For safe access to characters in the buffer use CharAt (with template parameter TCheck being CHK) which returns '\0'
in the case of that idx is out of bounds.idx | The index of the character within this object's buffer. |
Definition at line 493 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseBin(integer,TNumberFormat<TChar>,integer)const "ParseBin" providing default values for omitted parameters.
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1598 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseBin(integer,TNumberFormat<TChar>,integer)const "ParseBin" providing default values for omitted parameters.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
Definition at line 1615 of file string.inl.
ALIB_DLL uint64_t alib::strings::TString< TChar >::ParseBin | ( | integer | startIdx = 0, |
TNumberFormat< TChar > * | numberFormat = nullptr, | ||
integer * | newIdx = nullptr ) const |
Reads an unsigned 64-bit integer in binary format at the given position from this string.
Parameter numberFormat defaults to nullptr
. This denotes static singleton NumberFormat::Computational which is configured to not using - and therefore also not parsing - grouping characters.
Optional output parameter newIdx may be used to detect if parsing was successful. If not, it receives the value of startIdx, even if leading whitespaces had been read.
For more information on number conversion, see class NumberFormat. All number-parsing interface methods have a corresponding implementation within this class.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
|
inline |
Overloaded version of alib::strings::TString::ParseBin(integer,TNumberFormat<TChar>,integer)const "ParseBin" providing default values for omitted parameters.
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1584 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseDec(integer,TNumberFormat<TChar>,integer)const "ParseDec" providing default values for omitted parameters.
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1524 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseDec(integer,TNumberFormat<TChar>,integer)const "ParseDec" providing default values for omitted parameters.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
Definition at line 1541 of file string.inl.
ALIB_DLL uint64_t alib::strings::TString< TChar >::ParseDec | ( | integer | startIdx = 0, |
TNumberFormat< TChar > * | numberFormat = nullptr, | ||
integer * | newIdx = nullptr ) const |
Reads an unsigned 64-bit integer in standard decimal format at the given position from this AString.
Parameter numberFormat defaults to nullptr
. This denotes static singleton TNumberFormat::Computational which is configured to not using - and therefore also not parsing - grouping characters.
Optional output parameter newIdx may be used to detect if parsing was successful. If not, it receives the value of startIdx, even if leading whitespaces had been read.
Sign literals '-'
or '+'
are not accepted and parsing will fail. For reading signed integral values, see methods ParseInt, for floating point numbers ParseFloat.
For more information on number conversion, see class NumberFormat. All number-parsing interface methods have a corresponding implementation within this class.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
|
inline |
Overloaded version of alib::strings::TString::ParseDec(integer,TNumberFormat<TChar>,integer)const "ParseDec" providing default values for omitted parameters.
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1510 of file string.inl.
ALIB_DLL uint64_t alib::strings::TString< TChar >::ParseDecDigits | ( | integer | startIdx = 0, |
integer * | newIdx = nullptr ) const |
Parses an integral value consisting of characters '0'
to '9'
from this string.
Unlike with ParseInt or ParseDec, no sign, whitespaces, or group characters are accepted.
startIdx | The start index from where the integral value is tried to be parsed. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the float number that was parsed. If parsing fails, it will be set to the value of parameter startIdx. Therefore, this parameter can be used to check if a value was found. |
|
inline |
Overloaded version of alib::strings::TString::ParseFloat(integer,TNumberFormat<TChar>,integer)const "ParseFloat" providing default values for omitted parameters.
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1819 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseFloat(integer,TNumberFormat<TChar>,integer)const "ParseFloat" providing default values for omitted parameters.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
Definition at line 1836 of file string.inl.
ALIB_DLL double alib::strings::TString< TChar >::ParseFloat | ( | integer | startIdx = 0, |
TNumberFormat< TChar > * | numberFormat = nullptr, | ||
integer * | newIdx = nullptr ) const |
Reads a floating point number at the given position from this string.
Parameter numberFormat defaults to nullptr
. This denotes static singleton NumberFormat::Computational which is configured to 'international' settings (not using the locale) and therefore also not parsing grouping characters.
Optional output parameter newIdx may be used to detect if parsing was successful. If not, it receives the value of startIdx, even if leading whitespaces had been read.
For more information on number conversion, see class NumberFormat. All number-parsing interface methods have a corresponding implementation within this class.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
|
inline |
Overloaded version of alib::strings::TString::ParseFloat(integer,TNumberFormat<TChar>,integer)const "ParseFloat" providing default values for omitted parameters.
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1805 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseHex(integer,TNumberFormat<TChar>,integer)const "ParseHex" providing default values for omitted parameters.
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1672 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseHex(integer,TNumberFormat<TChar>,integer)const "ParseHex" providing default values for omitted parameters.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
Definition at line 1689 of file string.inl.
ALIB_DLL uint64_t alib::strings::TString< TChar >::ParseHex | ( | integer | startIdx = 0, |
TNumberFormat< TChar > * | numberFormat = nullptr, | ||
integer * | newIdx = nullptr ) const |
Reads an unsigned 64-bit integer in hexadecimal format at the given position from this string.
Parameter numberFormat defaults to nullptr
. This denotes static singleton NumberFormat::Computational which is configured to not using - and therefore also not parsing - grouping characters.
Optional output parameter newIdx may be used to detect if parsing was successful. If not, it receives the value of startIdx, even if leading whitespaces had been read.
For more information on number conversion, see class NumberFormat. All number-parsing interface methods have a corresponding implementation within this class.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
|
inline |
Overloaded version of alib::strings::TString::ParseHex(integer,TNumberFormat<TChar>,integer)const "ParseHex" providing default values for omitted parameters.
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1658 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseInt(integer,TNumberFormat<TChar>,integer)const "ParseInt" providing default values for omitted parameters.
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1447 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseInt(integer,TNumberFormat<TChar>,integer)const "ParseInt" providing default values for omitted parameters.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
Definition at line 1464 of file string.inl.
ALIB_DLL int64_t alib::strings::TString< TChar >::ParseInt | ( | integer | startIdx = 0, |
TNumberFormat< TChar > * | numberFormat = nullptr, | ||
integer * | newIdx = nullptr ) const |
Parses an integral value in decimal, binary, hexadecimal or octal format from the string
Parameter numberFormat defaults to nullptr
. This denotes static singleton NumberFormat::Computational which is configured to not using - and therefore also not parsing - grouping characters.
Optional output parameter newIdx may be used to detect if parsing was successful. If not, it receives the value of startIdx, even if leading whitespaces had been read.
For more information on number conversion, see class NumberFormat. All of its interface methods have a corresponding implementation within class AString.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
|
inline |
Overloaded version of alib::strings::TString::ParseInt(integer,TNumberFormat<TChar>,integer)const "ParseInt" providing default values for omitted parameters.
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1433 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseOct(integer,TNumberFormat<TChar>,integer)const "ParseOct" providing default values for omitted parameters.
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1746 of file string.inl.
|
inline |
Overloaded version of alib::strings::TString::ParseOct(integer,TNumberFormat<TChar>,integer)const "ParseOct" providing default values for omitted parameters.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
Definition at line 1763 of file string.inl.
ALIB_DLL uint64_t alib::strings::TString< TChar >::ParseOct | ( | integer | startIdx = 0, |
TNumberFormat< TChar > * | numberFormat = nullptr, | ||
integer * | newIdx = nullptr ) const |
Reads an unsigned 64-bit integer in octal format at the given position from this string.
Parameter numberFormat defaults to nullptr
. This denotes static singleton NumberFormat::Computational which is configured to not using - and therefore also not parsing - grouping characters.
Optional output parameter newIdx may be used to detect if parsing was successful. If not, it receives the value of startIdx, even if leading whitespaces had been read.
For more information on number conversion, see class NumberFormat. All number-parsing interface methods have a corresponding implementation within this class.
startIdx | The start index for parsing. Optional and defaults to 0 . | |
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value startIdx. |
|
inline |
Overloaded version of alib::strings::TString::ParseOct(integer,TNumberFormat<TChar>,integer)const "ParseOct" providing default values for omitted parameters.
numberFormat | The format definition. Defaults to nullptr . | |
[out] | newIdx | Optional output variable that will point to the first character in this string after the number parsed. On failure, it will be set to the initial value 0 . |
Definition at line 1732 of file string.inl.
|
inline |
Returns a reverse iterator pointing to a constant character at the end of this string.
Definition at line 2174 of file string.inl.
|
inline |
Returns a reverse iterator pointing before the start of this string.
Definition at line 2178 of file string.inl.
|
inline |
Returns Length as size_t
. Added for compatibility with the standard library.
Definition at line 2190 of file string.inl.
|
inline |
Returns true
, if this string starts with the contents of the string-like object given with parameter needle. In the special case that needle is empty, true
is returned.
TSensitivity | Determines if comparison is case-sensitive (the default) or not. |
TCheck | Defaults to CHK, which is the normal invocation mode. If <false> is given, the given needle must not be empty and must not be longer than this string! pos is performed and needle must not be nulled. |
needle | The string to compare the start of this string with. If nulled or empty, true is returned. |
true
if needle is found at the start of this string, false
otherwise. Definition at line 772 of file string.inl.
|
inline |
Returns a new string object representing a substring of the string that this object represents.
TCheck | Defaults to CHK, which is the normal invocation mode. If false is given, no range check is performed. |
regionStart | The start of the substring within this string. |
regionLength | The length of the substring to return. Defaults to MAX_LEN. |
Definition at line 386 of file string.inl.
integer alib::strings::TString< TChar >::WStringLength | ( | ) | const |
Returns the length of the string if represented as a wide character string. If template parameter TChar equals wchar
, then this is identical with Length. Otherwise the calculation is done using
If the conversion fails, -1
is returned.