userver: utils::SmallString< N > Class Template Reference
Loading...
Searching...
No Matches
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: