Sane C++ Libraries: SC::String Struct Reference (original) (raw)
A non-modifiable owning string with associated encoding. More...
#include <[String.h](String%5F8h%5Fsource.html)>

| Public Member Functions | |
|---|---|
| String (StringEncoding encoding=StringEncoding::Utf8) | |
| Builds an empty String with a given Encoding. | |
| String (StringSpan sv) | |
| Builds String from a StringSpan. | |
| String (Buffer &&otherData, StringEncoding encoding) | |
| Builds a String from a buffer ensuring zero termination. | |
| template<size_t N> | |
| String (const char(&text)[N]) | |
| Builds String with a null terminated char string literal. | |
| bool | owns (StringSpan view) const |
| Checks if the memory pointed by the StringSpan is owned by this String. | |
| bool | assign (StringSpan sv) |
| Assigns a StringSpan to this String, replacing existing contents. | |
| StringEncoding | getEncoding () const |
| Get StringSpan encoding. | |
| size_t | sizeInBytesIncludingTerminator () const |
| Get length of the string in bytes (including null terminator bytes) | |
| const char * | bytesIncludingTerminator () const |
| Access current string content as read-only null-terminated const char* | |
| bool | isEmpty () const |
| Check if String is empty. | |
| StringSpan | view () const SC_LANGUAGE_LIFETIME_BOUND |
| Obtain a null-terminated StringSpan from current String. | |
| bool | operator== (const String &other) const |
| Check if current String is same as other String. | |
| bool | operator!= (const String &other) const |
| Check if current String is different from other String. | |
| bool | operator== (const StringSpan other) const |
| Check if current String is same as other StringSpan. | |
| bool | operator!= (const StringSpan other) const |
| Check if current String is different from other StringSpan. | |
| template<size_t N> | |
| bool | operator== (const char(&other)[N]) const |
| Check if current String is equal to the ascii string literal. | |
| template<size_t N> | |
| bool | operator!= (const char(&other)[N]) const |
| Check if current String is different from the ascii string literal. | |
| bool | operator< (const StringSpan other) const |
| Check if current String is smaller to another StringView (using StringView::compare) | |
| template<size_t N> | |
| String & | operator= (const char(&text)[N]) |
| Assigns an ascii string literal to current String. | |
| String & | operator= (StringSpan view) |
| Assigns (copy) contents of given StringSpan in current String. | |
| Protected Member Functions |
|---|
| Protected Attributes | |
|---|---|
| StringEncoding | encoding |
| Buffer | data |
| Friends | |
|---|---|
| struct | StringTest |
| template | |
| struct | GrowableBuffer |
A non-modifiable owning string with associated encoding.
SC::String is (currently) implemented as a SC::Vector with the associated string encoding. A SC::StringSpan can be obtained from it calling SC::String::view method but it's up to the user making sure that the usage of such SC::StringSpan doesn't exceed lifetime of the SC::String it originated from (but thankfully Address Sanitizer will catch the issue if it goes un-noticed).
◆ String() [1/4]
| SC::String::String ( StringEncoding encoding = StringEncoding::Utf8) | inline |
|---|
Builds an empty String with a given Encoding.
Parameters
| encoding | The encoding of the String |
|---|
◆ String() [2/4]
Builds String from a StringSpan.
Parameters
Warning
This function will assert if StringSpan::assign fails
◆ String() [3/4]
| SC::String::String | ( | Buffer && | otherData, |
|---|---|---|---|
| StringEncoding | encoding ) |
Builds a String from a buffer ensuring zero termination.
Warning
This function will assert if StringSpan::assign fails
◆ String() [4/4]
| SC::String::String ( const char(&) _text_[N]) | inline |
|---|
Builds String with a null terminated char string literal.
Template Parameters
| N | Length of the string literal (including null terminator) |
|---|
Parameters
| text | Pointer to string literal |
|---|
Warning
This function will assert if StringSpan::assign fails
◆ assign()
| bool SC::String::assign ( StringSpan sv) | nodiscard |
|---|
Assigns a StringSpan to this String, replacing existing contents.
Parameters
Returns
true if StringSpan is assigned successfully
Note
This method will invalidate any StringSpan::view previously obtained
◆ bytesIncludingTerminator()
| const char * SC::String::bytesIncludingTerminator ( ) const | inlinenodiscard |
|---|
Access current string content as read-only null-terminated const char*
Returns
A null terminated const char*
◆ getEncoding()
| StringEncoding SC::String::getEncoding ( ) const | inlinenodiscard |
|---|
◆ isEmpty()
| bool SC::String::isEmpty ( ) const | inlinenodiscard |
|---|
◆ operator!=() [1/3]
| bool SC::String::operator!= ( const char(&) _other_[N]) const | inlinenodiscard |
|---|
Check if current String is different from the ascii string literal.
Template Parameters
| N | Length of string literal, including null terminator |
|---|
Parameters
Returns
true if the String is different from other
◆ operator!=() [2/3]
| bool SC::String::operator!= ( const String & other) const | inlinenodiscard |
|---|
Check if current String is different from other String.
Parameters
Returns
true if the two strings are different
◆ operator!=() [3/3]
| bool SC::String::operator!= ( const StringSpan other) const | inlinenodiscard |
|---|
◆ operator<()
| bool SC::String::operator< ( const StringSpan other) const | inlinenodiscard |
|---|
◆ operator=() [1/2]
| String & SC::String::operator= ( const char(&) _text_[N]) | inline |
|---|
Assigns an ascii string literal to current String.
Template Parameters
| N | Length of string literal, including null terminator |
|---|
Parameters
Returns
Reference to current String
Warning
Assignment operator will assert if String::assign fails
◆ operator=() [2/2]
Assigns (copy) contents of given StringSpan in current String.
Warning
Assignment operator will assert if String::assign fails
◆ operator==() [1/3]
| bool SC::String::operator== ( const char(&) _other_[N]) const | inlinenodiscard |
|---|
Check if current String is equal to the ascii string literal.
Template Parameters
| N | Length of string literal, including null terminator |
|---|
Parameters
Returns
true if the String is the same as other
◆ operator==() [2/3]
| bool SC::String::operator== ( const String & other) const | inlinenodiscard |
|---|
Check if current String is same as other String.
Parameters
Returns
true if the two strings are equal
◆ operator==() [3/3]
| bool SC::String::operator== ( const StringSpan other) const | inlinenodiscard |
|---|
◆ owns()
| bool SC::String::owns ( StringSpan view) const | nodiscard |
|---|
◆ sizeInBytesIncludingTerminator()
| size_t SC::String::sizeInBytesIncludingTerminator ( ) const | inlinenodiscard |
|---|
Get length of the string in bytes (including null terminator bytes)
Returns
Size in bytes including null terminator
◆ view()
The documentation for this struct was generated from the following file: