ALib C++ Framework
by
Library Version: 2511 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
alib::strings::TCString< TChar > Class Template Reference

Description:

template<typename TChar>
class alib::strings::TCString< TChar >

This class specializes its base class String in that respect that the character strings represented are guaranteed to be zero-terminated.
Zero-terminated strings are widely used by programming language C and are often called "C-strings", what gave the class its name.

See also
For an introduction into the ALib string classes see this module's Programmer's Manual.
Template Parameters
TCharThe character type of this string.

Definition at line 30 of file cstring.inl.

Inheritance diagram for alib::strings::TCString< TChar >:
alib::strings::TString< TChar >

Public Method Index:

constexpr TCString ()=default
 Defaulted default constructor. Leaves this instance uninitialized and undefined.
constexpr TCString (const TChar *pBuffer, integer contentLength)
constexpr TCString (lang::IsNullptr auto const &) noexcept
 Constructor accepting nullptr. Constructs a nulled string.
template<typename T>
constexpr TCString (T src)
template<typename TAllocator>
 TCString (TAllocator &allocator, const TString< TChar > &copy)
template<typename TAllocator>
void Allocate (TAllocator &allocator, const TString< TChar > &copy)
template<typename TAllocator>
void Free (TAllocator &allocator) const
template<lang::Inclusion TInclusion, typename TCheck = CHK>
integer IndexOfAny (const TCString &needles, integer startIdx=0) const
template<typename T>
constexpr operator T () const
TChar operator[] (integer op) const
Public Method Index: inherited from alib::strings::TString< TChar >
constexpr TString () noexcept=default
template<typename T>
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>
constexpr TString (T &src) noexcept
template<typename TAllocator>
 TString (TAllocator &allocator, const TString< TChar > &copy)
constexpr TString (TString &&) noexcept=default
 Defaulted move constructor.
bool AdjustRegion (integer &regionStart, integer &regionLength) const
template<typename TAllocator>
void Allocate (TAllocator &allocator, const TString< TChar > &copy)
const_iterator begin () const
constexpr const TChar * Buffer () const
const_iterator cbegin () const
const_iterator cend () const
template<typename TCheck = CHK>
TChar CharAt (integer idx) const
template<typename TCheck = CHK>
TChar CharAtEnd () const
template<typename TCheck = CHK>
TChar CharAtStart () 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>
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< TChar > &rhs) const
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive>
bool ContainsAt (const TString &needle, integer pos) const
integer CopyTo (TChar *dest) const
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive>
integer Count (const TString &needle, const TString &omit, integer startPos=0) const
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive>
integer Count (const TString &needle, integer startPos=0) 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
const_reverse_iterator crbegin () const
const_reverse_iterator crend () const
const_iterator end () const
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive>
bool EndsWith (const TString &needle) const
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive>
bool Equals (const TString< TChar > &rhs) const
template<typename TAllocator>
void Free (TAllocator &allocator)
std::size_t Hashcode () const
std::size_t HashcodeIgnoreCase () 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 IndexOf (TChar needle, integer regionStart, integer regionLength) const
template<typename TCheck = CHK>
integer IndexOf (TChar needle, integer startIdx=0) const
template<lang::Inclusion TInclusion, typename TCheck = CHK>
integer IndexOfAny (const TString &needles, integer startIdx=0) const
template<typename TCheck = CHK>
integer IndexOfFirstDifference (const TString &needle, lang::Case sensitivity=lang::Case::Sensitive, integer startIdx=0) const
integer IndexOfOrLength (TChar needle) const
template<typename TCheck = CHK>
integer IndexOfOrLength (TChar needle, integer startIdx) const
integer IndexOfSegmentEnd (TChar opener, TChar closer, integer idx) const
constexpr bool IsEmpty () const
constexpr bool IsNotEmpty () const
constexpr bool IsNotNull () const
constexpr bool IsNull () const
template<typename TCheck = CHK>
integer LastIndexOf (TChar needle, integer startIndex=MAX_LEN) const
template<lang::Inclusion TInclusion, typename TCheck = CHK>
integer LastIndexOfAny (const TString &needles, integer startIdx=MAX_LEN) const
constexpr integer Length () const
template<typename T>
constexpr operator T () const
constexpr TStringoperator= (const TString &) noexcept=default
constexpr TStringoperator= (TString &&) noexcept=default
TChar operator[] (integer idx) const
uint64_t ParseBin (integer *newIdx) const
uint64_t ParseBin (integer startIdx, integer *newIdx) const
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 ParseDec (integer *newIdx) const
uint64_t ParseDec (integer startIdx, integer *newIdx) const
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 ParseDecDigits (integer startIdx=0, integer *newIdx=nullptr) const
double ParseFloat (integer *newIdx) const
double ParseFloat (integer startIdx, integer *newIdx) const
double ParseFloat (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const
double ParseFloat (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const
uint64_t ParseHex (integer *newIdx) const
uint64_t ParseHex (integer startIdx, integer *newIdx) const
uint64_t ParseHex (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const
uint64_t ParseHex (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const
int64_t ParseInt (integer *newIdx) const
int64_t ParseInt (integer startIdx, integer *newIdx) const
int64_t ParseInt (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const
int64_t ParseInt (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const
uint64_t ParseOct (integer *newIdx) const
uint64_t ParseOct (integer startIdx, integer *newIdx) const
uint64_t ParseOct (integer startIdx=0, TNumberFormat< TChar > *numberFormat=nullptr, integer *newIdx=nullptr) const
uint64_t ParseOct (TNumberFormat< TChar > *numberFormat, integer *newIdx=nullptr) const
const_reverse_iterator rbegin () const
const_reverse_iterator rend () const
size_type size () const
template<typename TCheck = CHK, lang::Case TSensitivity = lang::Case::Sensitive>
bool StartsWith (const TString &needle) const
template<typename TCheck = CHK>
TString< TChar > Substring (integer regionStart, integer regionLength=MAX_LEN) const
integer WStringLength () const

Protected Type Index:

using base = TString<TChar>
 Shortcut to the base type.

Additional Inherited Members

Public Type Index: inherited from alib::strings::TString< TChar >
using const_iterator = TRandomAccessIterator<const TChar>
using const_reverse_iterator = std::reverse_iterator<const_iterator>
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.
Protected Field Index: inherited from alib::strings::TString< TChar >
const TChar * buffer
integer length
Protected Method Index: inherited from alib::strings::TString< TChar >
template<lang::Case TSensitivity = lang::Case::Sensitive>
integer indexOfString (const TString &needle, integer startIdx, integer endIdx) const

Type Definition Details:

◆ base

template<typename TChar>
using alib::strings::TCString< TChar >::base = TString<TChar>
protected

Shortcut to the base type.

Definition at line 34 of file cstring.inl.

Constructor(s) / Destructor Details:

◆ TCString() [1/4]

template<typename TChar>
alib::strings::TCString< TChar >::TCString ( const TChar * pBuffer,
integer contentLength )
inlineexplicitconstexpr

Constructor accepting a pointer to a character array and a string length.

Note
It is a user's responsibility to ensure that the character array provided includes a terminating '\0' character.
In debug-compilations a run-time assertion is raised if the provided buffer is not zero-terminated.
Parameters
pBufferThe buffer to use.
contentLengthThe length of the content in the given buffer.

Definition at line 50 of file cstring.inl.

◆ TCString() [2/4]

template<typename TChar>
alib::strings::TCString< TChar >::TCString ( lang::IsNullptr auto const & )
inlineconstexprnoexcept

Constructor accepting nullptr. Constructs a nulled string.

Definition at line 61 of file cstring.inl.

◆ TCString() [3/4]

template<typename TChar>
template<typename T>
alib::strings::TCString< TChar >::TCString ( T src)
constexpr

Templated implicit constructor accepting a const reference to an object of a type that satisfies the concepts IsImplicitZTArraySource, IsExplicitZTArraySource, IsExplicitZTArraySource, IsMutableZTArraySource, and IsMutableZTArraySource.

(Internally, for each concept an own constructor implementation is provided.) Custom types can be enabled for this constructor by specializing the corresponding traits-types.

Template Parameters
TThe type of the given src. Deduced by the compiler.
Parameters
srcThe source of the string data to copy.

◆ TCString() [4/4]

template<typename TChar>
template<typename TAllocator>
alib::strings::TCString< TChar >::TCString ( TAllocator & allocator,
const TString< TChar > & copy )
inline

Constructor, which allocates memory including an extra character for zero-termination, copies the given string's contents and lets this CString represent this new zero-terminated 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.

See also
Methods Allocate and Free for information how to use allocated string objects.
Template Parameters
TAllocatorThe type of the given allocator, as prototyped with the class Allocator. Deduced by the compiler.
Parameters
allocatorThe allocator to use.
copyThe string to copy to the new memory allocated.

Definition at line 170 of file cstring.inl.

Method Details:

◆ Allocate()

template<typename TChar>
template<typename TAllocator>
void alib::strings::TCString< TChar >::Allocate ( TAllocator & allocator,
const TString< TChar > & copy )
inline

Sets this object to a zero-terminated copy of the given string, allocated in given allocator.

Note
In case given copy is empty or nulled, no allocation is performed and this string is set to empty. Still the pointer to the buffer is copied. Thus, this string behaves in respect to method IsNull the same as given string copy.
Template Parameters
TAllocatorThe type of the given allocator, as prototyped with the class Allocator. Deduced by the compiler.
Parameters
allocatorThe allocator to use.
copyThe string to copy to the new memory allocated.

Definition at line 330 of file cstring.inl.

◆ Free()

template<typename TChar>
template<typename TAllocator>
void alib::strings::TCString< TChar >::Free ( TAllocator & allocator) const
inline

Deallocates this String's memory in allocator and sets this instance to nulled.

See also
Notes in the similar method Free of the base class, which apply with this override likewise.
Template Parameters
TAllocatorThe type of the given allocator, as prototyped with Allocator. Deduced by the compiler.
Parameters
allocatorThe allocator to use.

Definition at line 352 of file cstring.inl.

◆ IndexOfAny()

template<typename TChar>
template<lang::Inclusion TInclusion, typename TCheck = CHK>
integer alib::strings::TCString< TChar >::IndexOfAny ( const TCString< TChar > & needles,
integer startIdx = 0 ) const
inline

Returns the index of the first character which is included, respectively not included in a given set of characters.

This method searches forwards. For backwards search, see String::LastIndexOfAny.

Note
This method overrides method String::IndexOf. This implementation however expects a CString with parameter needles (beside the fact that it has to be invoked on a CString itself). If no zero-terminated needle string is available, the parent's original method needs to be invoked. This has to be done by explicitly naming the parent class in the invocation, like, for example, in
   myCString.TString::IndexOfAny<Inclusion::Include>( myString );
On most platforms, this zero-terminated version should perform slightly faster than the original method in class String.
Template Parameters
TCheckDefaults to CHK, which is the normal invocation mode. If <false> is added to the method name, no parameter checks are performed and the needles must not be empty.
TInclusionDenotes 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.
Parameters
needlesSet of characters to be taken into account.
startIdxThe 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.
Returns
The index of the first character found which is included, respectively not included, in the given set of characters. If nothing is found, -1 is returned.

Definition at line 293 of file cstring.inl.

◆ operator T()

template<typename TChar>
template<typename T>
alib::strings::TCString< TChar >::operator T ( ) const
constexpr

Templated implicit cast operator constructing an instance of type T from this string instance, selected when type T satisfys one of he the concepts

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.

Template Parameters
TThe type to implicitly cast this instance to. Requires satisfying the concept IsImplicitZTArrayCast. Deduced by the compiler.
Returns
A value of type T.

◆ operator[]()

template<typename TChar>
TChar alib::strings::TCString< TChar >::operator[] ( integer op) const
inline

Reads a character at a given index.
Overrides String::operator[] to change the debug assertion to allow inclusion of the termination character.

Attention
No parameter check is performed (other than an assertions in debug-compilation of ALib). See String::operator[] for details.
Parameters
opThe index of the character within this object's buffer.
Returns
If the character contained at index op.

Definition at line 251 of file cstring.inl.


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