userver: utils::SmallString< N > Class Template Reference
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
utils::SmallString< N > Class Template Referencefinal

An alternative to std::string with a custom SSO (small string optimization) container size. Unlike std::string, SmallString is not null-terminated thus it has no c_str(), data() returns a not null-terminated buffer. More...

#include <userver/utils/small_string.hpp>

Public Types

using iterator = typename Container::iterator
 
using const_iterator = typename Container::const_iterator
 

Public Member Functions

 SmallString ()=default
 Create empty string.
 
 SmallString (const SmallString< N > &)=default
 Create a string from another one.
 
 SmallString (SmallString< N > &&) noexcept=default
 Create a string from another one.
 
 SmallString (std::string_view sv)
 Create a string from std::string_view.
 
SmallStringoperator= (std::string_view sv)
 Assign the value of other string_view to this string.
 
SmallStringoperator= (const SmallString &)=default
 Assign the value of other string to this string.
 
SmallStringoperator= (SmallString &&) noexcept=default
 Assign the value of other string to this string.
 
 operator std::string_view () const
 Convert string to a std::string_view.
 
const charoperator[] (std::size_t pos) const
 Read-only subscript access to the data contained in the string.
 
charoperator[] (std::size_t pos)
 Subscript access to the data contained in the string.
 
const charat (std::size_t pos) const
 Provides access to the data contained in the string.
 
charat (std::size_t pos)
 Provides access to the data contained in the string.
 
iterator begin () noexcept
 
const_iterator begin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
std::size_t size () const noexcept
 Get string size.
 
const chardata () const noexcept
 Get pointer to data.
 
chardata () noexcept
 Get pointer to data.
 
void resize (std::size_t n, char c)
 Resize the string. If its length is increased, fill new chars with c.
 
std::size_t capacity () const noexcept
 Get current capacity.
 
void reserve (std::size_t n)
 Reserve to n bytes.
 
void clear () noexcept
 Clear the string.
 
bool empty () const noexcept
 Is the string empty?
 
charfront ()
 Get a reference to the first character.
 
const charfront () const
 Get a reference to the first character.
 
charback ()
 Get a reference to the last character.
 
const charback () const
 Get a reference to the last character.
 
void push_back (char c)
 Append a character to the string.
 
void pop_back ()
 Remove the last character from the string.
 

Detailed Description

template<std::size_t N>
class utils::SmallString< N >

An alternative to std::string with a custom SSO (small string optimization) container size. Unlike std::string, SmallString is not null-terminated thus it has no c_str(), data() returns a not null-terminated buffer.

Definition at line 24 of file small_string.hpp.

Member Typedef Documentation

◆ const_iterator

template<std::size_t N>
using utils::SmallString< N >::const_iterator = typename Container::const_iterator

Definition at line 66 of file small_string.hpp.

◆ iterator

template<std::size_t N>
using utils::SmallString< N >::iterator = typename Container::iterator

Definition at line 64 of file small_string.hpp.

Constructor & Destructor Documentation

◆ SmallString()

template<std::size_t N>
utils::SmallString< N >::SmallString ( std::string_view  sv)
explicit

Create a string from std::string_view.

Definition at line 124 of file small_string.hpp.

Member Function Documentation

◆ at() [1/2]

template<std::size_t N>
char & utils::SmallString< N >::at ( std::size_t  pos)

Provides access to the data contained in the string.

Definition at line 175 of file small_string.hpp.

◆ at() [2/2]

template<std::size_t N>
const char & utils::SmallString< N >::at ( std::size_t  pos) const

Provides access to the data contained in the string.

Definition at line 169 of file small_string.hpp.

◆ back() [1/2]

template<std::size_t N>
char & utils::SmallString< N >::back ( )

Get a reference to the last character.

Definition at line 231 of file small_string.hpp.

◆ back() [2/2]

template<std::size_t N>
const char & utils::SmallString< N >::back ( ) const

Get a reference to the last character.

Definition at line 236 of file small_string.hpp.

◆ begin() [1/2]

template<std::size_t N>
SmallString< N >::const_iterator utils::SmallString< N >::begin ( ) const
noexcept

Definition at line 186 of file small_string.hpp.

◆ begin() [2/2]

template<std::size_t N>
SmallString< N >::iterator utils::SmallString< N >::begin ( )
noexcept

Definition at line 181 of file small_string.hpp.

◆ capacity()

template<std::size_t N>
std::size_t utils::SmallString< N >::capacity ( ) const
noexcept

Get current capacity.

Definition at line 256 of file small_string.hpp.

◆ data() [1/2]

template<std::size_t N>
const char * utils::SmallString< N >::data ( ) const
noexcept

Get pointer to data.

Warning
The buffer is not null-terminated.

Definition at line 206 of file small_string.hpp.

◆ data() [2/2]

template<std::size_t N>
char * utils::SmallString< N >::data ( )
noexcept

Get pointer to data.

Warning
The buffer is not null-terminated.

Definition at line 211 of file small_string.hpp.

◆ empty()

template<std::size_t N>
bool utils::SmallString< N >::empty ( ) const
noexcept

Is the string empty?

Definition at line 216 of file small_string.hpp.

◆ end() [1/2]

template<std::size_t N>
SmallString< N >::const_iterator utils::SmallString< N >::end ( ) const
noexcept

Definition at line 196 of file small_string.hpp.

◆ end() [2/2]

template<std::size_t N>
SmallString< N >::iterator utils::SmallString< N >::end ( )
noexcept

Definition at line 191 of file small_string.hpp.

◆ front() [1/2]

template<std::size_t N>
char & utils::SmallString< N >::front ( )

Get a reference to the first character.

Definition at line 221 of file small_string.hpp.

◆ front() [2/2]

template<std::size_t N>
const char & utils::SmallString< N >::front ( ) const

Get a reference to the first character.

Definition at line 226 of file small_string.hpp.

◆ operator std::string_view()

template<std::size_t N>
utils::SmallString< N >::operator std::string_view ( ) const

Convert string to a std::string_view.

Definition at line 128 of file small_string.hpp.

◆ operator=()

template<std::size_t N>
SmallString< N > & utils::SmallString< N >::operator= ( std::string_view  sv)

Assign the value of other string_view to this string.

Definition at line 133 of file small_string.hpp.

◆ operator[]() [1/2]

template<std::size_t N>
char & utils::SmallString< N >::operator[] ( std::size_t  pos)

Subscript access to the data contained in the string.

Definition at line 164 of file small_string.hpp.

◆ operator[]() [2/2]

template<std::size_t N>
const char & utils::SmallString< N >::operator[] ( std::size_t  pos) const

Read-only subscript access to the data contained in the string.

Definition at line 159 of file small_string.hpp.

◆ pop_back()

template<std::size_t N>
void utils::SmallString< N >::pop_back ( )

Remove the last character from the string.

Definition at line 246 of file small_string.hpp.

◆ push_back()

template<std::size_t N>
void utils::SmallString< N >::push_back ( char  c)

Append a character to the string.

Definition at line 241 of file small_string.hpp.

◆ reserve()

template<std::size_t N>
void utils::SmallString< N >::reserve ( std::size_t  n)

Reserve to n bytes.

Definition at line 261 of file small_string.hpp.

◆ resize()

template<std::size_t N>
void utils::SmallString< N >::resize ( std::size_t  n,
char  c 
)

Resize the string. If its length is increased, fill new chars with c.

Definition at line 251 of file small_string.hpp.

◆ size()

template<std::size_t N>
std::size_t utils::SmallString< N >::size ( ) const
noexcept

Get string size.

Definition at line 201 of file small_string.hpp.


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