Nirtcpp 2.1.0
Nirtcpp is a high-performance c++ graphics engine.
Loading...
Searching...
No Matches
nirt::core::string< T, TAlloc > Class Template Reference

Very simple string class with some useful features. More...

Public Types

using char_type = T
 

Public Member Functions

 string ()
 Default constructor.
 
 string (const string< T, TAlloc > &other)
 Constructor.
 
template<class B , class A >
 string (const string< B, A > &other)
 Constructor from other string types.
 
 string (const double number)
 Constructs a string from a float.
 
 string (int number)
 Constructs a string from an int.
 
 string (unsigned int number)
 Constructs a string from an unsigned int.
 
 string (long number)
 Constructs a string from a long.
 
 string (unsigned long number)
 Constructs a string from an unsigned long.
 
template<class B >
 string (const B *const c, u32 length)
 Constructor for copying a string from a pointer with a given length.
 
template<class B >
 string (const B *const c)
 Constructor for Unicode and ASCII strings.
 
 ~string ()
 Destructor.
 
string< T, TAlloc > & operator= (const string< T, TAlloc > &other)
 Assignment operator.
 
template<class B , class A >
string< T, TAlloc > & operator= (const string< B, A > &other)
 Assignment operator for other string types.
 
template<class B >
string< T, TAlloc > & operator= (const B *const c)
 Assignment operator for strings, ASCII and Unicode.
 
string< T, TAllocoperator+ (const string< T, TAlloc > &other) const
 Append operator for other strings.
 
template<class B >
string< T, TAllocoperator+ (const B *const c) const
 Append operator for strings, ASCII and Unicode.
 
Toperator[] (const u32 index)
 Direct access operator.
 
const Toperator[] (const u32 index) const
 Direct access operator.
 
bool operator== (const T *const str) const
 Equality operator.
 
bool operator== (const string< T, TAlloc > &other) const
 Equality operator.
 
bool operator< (const string< T, TAlloc > &other) const
 Is smaller comparator.
 
bool operator!= (const T *const str) const
 Inequality operator.
 
bool operator!= (const string< T, TAlloc > &other) const
 Inequality operator.
 
u32 size () const
 Returns length of the string's content.
 
bool empty () const
 
void clear (bool releaseMemory=true)
 
const Tdata () const
 Returns character string.
 
string< T, TAlloc > & make_lower ()
 Makes the string lower case.
 
string< T, TAlloc > & make_upper ()
 Makes the string upper case.
 
bool equals_ignore_case (const string< T, TAlloc > &other) const
 Compares the strings ignoring case.
 
bool equals_substring_ignore_case (const string< T, TAlloc > &other, const s32 sourcePos=0) const
 Compares the strings ignoring case.
 
bool lower_ignore_case (const string< T, TAlloc > &other) const
 Compares the strings ignoring case.
 
bool equalsn (const string< T, TAlloc > &other, u32 n) const
 compares the first n characters of the strings
 
bool equalsn (const T *const str, u32 n) const
 compares the first n characters of the strings
 
string< T, TAlloc > & append (T character)
 Appends a character to this string.
 
string< T, TAlloc > & append (const T *const other, u32 length=0xffffffff)
 Appends a char string to this string.
 
string< T, TAlloc > & append (const string< T, TAlloc > &other)
 Appends a string to this string.
 
string< T, TAlloc > & append (const string< T, TAlloc > &other, u32 length)
 Appends a string of the length l to this string.
 
string< T, TAlloc > & insert (u32 pos, const char *s, u32 n)
 Insert a certain amount of characters into the string before the given index.
 
void reserve (u32 count)
 Reserves some memory.
 
s32 findFirst (T c) const
 finds first occurrence of character in string
 
s32 findFirstChar (const T *const c, u32 count=1) const
 finds first occurrence of a character of a list in string
 
template<class B >
s32 findFirstCharNotInList (const B *const c, u32 count=1) const
 Finds first position of a character not in a given list.
 
template<class B >
s32 findLastCharNotInList (const B *const c, u32 count=1) const
 Finds last position of a character not in a given list.
 
s32 findNext (T c, u32 startPos) const
 finds next occurrence of character in string
 
s32 findLast (T c, s32 start=-1) const
 finds last occurrence of character in string
 
s32 findLastChar (const T *const c, u32 count=1) const
 finds last occurrence of a character of a list in string
 
template<class B >
s32 find (const B *const str, const u32 start=0) const
 finds another string in this string
 
string< TsubString (u32 begin, s32 length, bool make_lower=false) const
 Returns a substring.
 
string< T, TAlloc > & operator+= (T c)
 Appends a character to this string.
 
string< T, TAlloc > & operator+= (const T *const c)
 Appends a char string to this string.
 
string< T, TAlloc > & operator+= (const string< T, TAlloc > &other)
 Appends a string to this string.
 
string< T, TAlloc > & operator+= (const int i)
 Appends a string representation of a number to this string.
 
string< T, TAlloc > & operator+= (const unsigned int i)
 Appends a string representation of a number to this string.
 
string< T, TAlloc > & operator+= (const long i)
 Appends a string representation of a number to this string.
 
string< T, TAlloc > & operator+= (const unsigned long i)
 Appends a string representation of a number to this string.
 
string< T, TAlloc > & operator+= (const double i)
 Appends a string representation of a number to this string.
 
string< T, TAlloc > & operator+= (const float i)
 Appends a string representation of a number to this string.
 
string< T, TAlloc > & replace (T toReplace, T replaceWith)
 Replaces all characters of a special type with another one.
 
string< T, TAlloc > & replace (const string< T, TAlloc > &toReplace, const string< T, TAlloc > &replaceWith)
 Replaces all instances of a string with another one.
 
string< T, TAlloc > & remove (T c)
 Removes characters from a string.
 
string< T, TAlloc > & remove (const string< T, TAlloc > &toRemove)
 Removes a string from the string.
 
string< T, TAlloc > & removeChars (const string< T, TAlloc > &characters)
 Removes characters from a string.
 
string< T, TAlloc > & trim (const string< T, TAlloc > &whitespace=" \t\n\r")
 Trims the string.
 
string< T, TAlloc > & eraseTrailingFloatZeros (char decimalPoint='.')
 Erase 0's at the end when a string ends with a floating point number.
 
string< T, TAlloc > & erase (u32 index)
 Erases a character from the string.
 
string< T, TAlloc > & validate ()
 verify the existing string.
 
T lastChar () const
 gets the last char of a string or null
 
template<class container >
u32 split (container &ret, const T *const delimiter, u32 countDelimiters=1, bool ignoreEmptyTokens=true, bool keepSeparators=false) const
 Split string into parts (tokens).
 

Friends

size_t multibyteToWString (string< wchar_t > &destination, const char *source, u32 sourceSize)
 Internally used by the other multibyteToWString functions.
 

Detailed Description

template<typename T, typename TAlloc>
class nirt::core::string< T, TAlloc >

Very simple string class with some useful features.

string<c8> and string<wchar_t> both accept Unicode AND ASCII/Latin-1, so you can assign Unicode to string<c8> and ASCII/Latin-1 to string<wchar_t> (and the other way round) if you want to.

However, note that the conversation between both is not done using any encoding. This means that c8 strings are treated as ASCII/Latin-1, not UTF-8, and are simply expanded to the equivalent wchar_t, while Unicode/wchar_t characters are truncated to 8-bit ASCII/Latin-1 characters, discarding all other information in the wchar_t.

Helper functions for converting between UTF-8 and wchar_t are provided outside the string class for explicit use.

Member Function Documentation

◆ append() [1/4]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::append ( const string< T, TAlloc > &  other)
inline

Appends a string to this string.

Parameters
otherString to append.

◆ append() [2/4]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::append ( const string< T, TAlloc > &  other,
u32  length 
)
inline

Appends a string of the length l to this string.

Parameters
otherother String to append to this string.
lengthHow much characters of the other string to add to this one.

◆ append() [3/4]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::append ( const T *const  other,
u32  length = 0xffffffff 
)
inline

Appends a char string to this string.

Parameters
otherChar string to append.
lengthThe length of the string to append.

◆ append() [4/4]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::append ( T  character)
inline

Appends a character to this string.

Parameters
characterCharacter to append.

◆ data()

template<typename T , typename TAlloc >
const T * nirt::core::string< T, TAlloc >::data ( ) const
inline

Returns character string.

Returns
pointer to NUL terminated string.

◆ empty()

template<typename T , typename TAlloc >
bool nirt::core::string< T, TAlloc >::empty ( ) const
inline

Informs if the string is empty or not.

Returns
True if the string is empty, false if not.

◆ equals_ignore_case()

template<typename T , typename TAlloc >
bool nirt::core::string< T, TAlloc >::equals_ignore_case ( const string< T, TAlloc > &  other) const
inline

Compares the strings ignoring case.

Parameters
otherOther string to compare.
Returns
True if the strings are equal ignoring case.

◆ equals_substring_ignore_case()

template<typename T , typename TAlloc >
bool nirt::core::string< T, TAlloc >::equals_substring_ignore_case ( const string< T, TAlloc > &  other,
const s32  sourcePos = 0 
) const
inline

Compares the strings ignoring case.

Parameters
otherOther string to compare.
sourcePoswhere to start to compare in the string
Returns
True if the strings are equal ignoring case.

◆ equalsn() [1/2]

template<typename T , typename TAlloc >
bool nirt::core::string< T, TAlloc >::equalsn ( const string< T, TAlloc > &  other,
u32  n 
) const
inline

compares the first n characters of the strings

Parameters
otherOther string to compare.
nNumber of characters to compare
Returns
True if the n first characters of both strings are equal.

◆ equalsn() [2/2]

template<typename T , typename TAlloc >
bool nirt::core::string< T, TAlloc >::equalsn ( const T *const  str,
u32  n 
) const
inline

compares the first n characters of the strings

Parameters
strOther string to compare.
nNumber of characters to compare
Returns
True if the n first characters of both strings are equal.

◆ erase()

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::erase ( u32  index)
inline

Erases a character from the string.

May be slow, because all elements following after the erased element have to be copied.

Parameters
indexIndex of element to be erased.

◆ eraseTrailingFloatZeros()

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::eraseTrailingFloatZeros ( char  decimalPoint = '.')
inline

Erase 0's at the end when a string ends with a floating point number.

After generating strings from floats we often end up with strings ending up with lots of zeros which don't add any value. Erase 'em all. Examples: "0.100000" becomes "0.1" "10.000000" becomes "10" "foo 3.140000" becomes "foo 3.14" "no_num.000" stays "no_num.000" "1." stays "1."

◆ find()

template<typename T , typename TAlloc >
template<class B >
s32 nirt::core::string< T, TAlloc >::find ( const B *const  str,
const u32  start = 0 
) const
inline

finds another string in this string

Parameters
strAnother string
startStart position of the search
Returns
Positions where the string has been found, or -1 if not found.

◆ findFirst()

template<typename T , typename TAlloc >
s32 nirt::core::string< T, TAlloc >::findFirst ( T  c) const
inline

finds first occurrence of character in string

Parameters
cCharacter to search for.
Returns
Position where the character has been found, or -1 if not found.

◆ findFirstChar()

template<typename T , typename TAlloc >
s32 nirt::core::string< T, TAlloc >::findFirstChar ( const T *const  c,
u32  count = 1 
) const
inline

finds first occurrence of a character of a list in string

Parameters
cList of characters to find. For example if the method should find the first occurrence of 'a' or 'b', this parameter should be "ab".
countAmount of characters in the list. Usually, this should be strlen(c)
Returns
Position where one of the characters has been found, or -1 if not found.

◆ findFirstCharNotInList()

template<typename T , typename TAlloc >
template<class B >
s32 nirt::core::string< T, TAlloc >::findFirstCharNotInList ( const B *const  c,
u32  count = 1 
) const
inline

Finds first position of a character not in a given list.

Parameters
cList of characters not to find. For example if the method should find the first occurrence of a character not 'a' or 'b', this parameter should be "ab".
countAmount of characters in the list. Usually, this should be strlen(c)
Returns
Position where the character has been found, or -1 if not found.

◆ findLast()

template<typename T , typename TAlloc >
s32 nirt::core::string< T, TAlloc >::findLast ( T  c,
s32  start = -1 
) const
inline

finds last occurrence of character in string

Parameters
cCharacter to search for.
startstart to search reverse ( default = -1, on end )
Returns
Position where the character has been found, or -1 if not found.

◆ findLastChar()

template<typename T , typename TAlloc >
s32 nirt::core::string< T, TAlloc >::findLastChar ( const T *const  c,
u32  count = 1 
) const
inline

finds last occurrence of a character of a list in string

Parameters
cList of strings to find. For example if the method should find the last occurrence of 'a' or 'b', this parameter should be "ab".
countAmount of characters in the list. Usually, this should be strlen(c)
Returns
Position where one of the characters has been found, or -1 if not found.

◆ findLastCharNotInList()

template<typename T , typename TAlloc >
template<class B >
s32 nirt::core::string< T, TAlloc >::findLastCharNotInList ( const B *const  c,
u32  count = 1 
) const
inline

Finds last position of a character not in a given list.

Parameters
cList of characters not to find. For example if the method should find the first occurrence of a character not 'a' or 'b', this parameter should be "ab".
countAmount of characters in the list. Usually, this should be strlen(c)
Returns
Position where the character has been found, or -1 if not found.

◆ findNext()

template<typename T , typename TAlloc >
s32 nirt::core::string< T, TAlloc >::findNext ( T  c,
u32  startPos 
) const
inline

finds next occurrence of character in string

Parameters
cCharacter to search for.
startPosPosition in string to start searching.
Returns
Position where the character has been found, or -1 if not found.

◆ lower_ignore_case()

template<typename T , typename TAlloc >
bool nirt::core::string< T, TAlloc >::lower_ignore_case ( const string< T, TAlloc > &  other) const
inline

Compares the strings ignoring case.

Parameters
otherOther string to compare.
Returns
True if this string is smaller ignoring case.

◆ operator+=() [1/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const double  i)
inline

Appends a string representation of a number to this string.

Parameters
iNumber to append.

◆ operator+=() [2/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const float  i)
inline

Appends a string representation of a number to this string.

Parameters
iNumber to append.

◆ operator+=() [3/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const int  i)
inline

Appends a string representation of a number to this string.

Parameters
iNumber to append.

◆ operator+=() [4/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const long  i)
inline

Appends a string representation of a number to this string.

Parameters
iNumber to append.

◆ operator+=() [5/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const string< T, TAlloc > &  other)
inline

Appends a string to this string.

Parameters
otherString to append.

◆ operator+=() [6/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const T *const  c)
inline

Appends a char string to this string.

Parameters
cChar string to append.

◆ operator+=() [7/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const unsigned int  i)
inline

Appends a string representation of a number to this string.

Parameters
iNumber to append.

◆ operator+=() [8/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( const unsigned long  i)
inline

Appends a string representation of a number to this string.

Parameters
iNumber to append.

◆ operator+=() [9/9]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::operator+= ( T  c)
inline

Appends a character to this string.

Parameters
cCharacter to append.

◆ remove() [1/2]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::remove ( const string< T, TAlloc > &  toRemove)
inline

Removes a string from the string.

Parameters
toRemoveString to remove.

◆ remove() [2/2]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::remove ( T  c)
inline

Removes characters from a string.

Parameters
cCharacter to remove.

◆ removeChars()

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::removeChars ( const string< T, TAlloc > &  characters)
inline

Removes characters from a string.

Parameters
charactersCharacters to remove.

◆ replace() [1/2]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::replace ( const string< T, TAlloc > &  toReplace,
const string< T, TAlloc > &  replaceWith 
)
inline

Replaces all instances of a string with another one.

Parameters
toReplaceThe string to replace.
replaceWithThe string replacing the old one.

◆ replace() [2/2]

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::replace ( T  toReplace,
T  replaceWith 
)
inline

Replaces all characters of a special type with another one.

Parameters
toReplaceCharacter to replace.
replaceWithCharacter replacing the old one.

◆ reserve()

template<typename T , typename TAlloc >
void nirt::core::string< T, TAlloc >::reserve ( u32  count)
inline

Reserves some memory.

Parameters
countAmount of characters to reserve.

◆ size()

template<typename T , typename TAlloc >
u32 nirt::core::string< T, TAlloc >::size ( ) const
inline

Returns length of the string's content.

Returns
Length of the string's content in characters, excluding the trailing NUL.

◆ split()

template<typename T , typename TAlloc >
template<class container >
u32 nirt::core::string< T, TAlloc >::split ( container ret,
const T *const  delimiter,
u32  countDelimiters = 1,
bool  ignoreEmptyTokens = true,
bool  keepSeparators = false 
) const
inline

Split string into parts (tokens).

This method will split a string at certain delimiter characters into the container passed in as reference. The type of the container has to be given as template parameter. It must provide a push_back and a size method.

Parameters
retThe result container. Tokens are added, the container is not cleared.
delimiterC-style string of delimiter characters
countDelimitersNumber of delimiter characters
ignoreEmptyTokensFlag to avoid empty substrings in the result container. If two delimiters occur without a character in between or an empty substring would be placed in the result. Or if a delimiter is the last character an empty substring would be added at the end. If this flag is set, only non-empty strings are stored.
keepSeparatorsFlag which allows to add the separator to the result string. If this flag is true, the concatenation of the substrings results in the original string. Otherwise, only the characters between the delimiters are returned.
Returns
The number of resulting substrings

◆ subString()

template<typename T , typename TAlloc >
string< T > nirt::core::string< T, TAlloc >::subString ( u32  begin,
s32  length,
bool  make_lower = false 
) const
inline

Returns a substring.

Parameters
beginStart of substring.
lengthLength of substring.
make_lowercopy only lower case

◆ trim()

template<typename T , typename TAlloc >
string< T, TAlloc > & nirt::core::string< T, TAlloc >::trim ( const string< T, TAlloc > &  whitespace = " \t\n\r")
inline

Trims the string.

Removes the specified characters (by default, Latin-1 whitespace) from the beginning and the end of the string.


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

Nirtcpp    @cppfx.xyz

Utxcpp    utx::print