userver: utils::SmallString< N > Class Template Reference
Loading...
Searching...
No Matches
utils::SmallString< N > Class Template Reference

#include <userver/utils/small_string.hpp>

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 26 of file 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.
 
template<class Operation >
void resize_and_overwrite (std::size_t size, Operation op)
 Resize the string. Use op to write into the string and replace a sequence of characters.
 
void shrink_to_fit ()
 Shrink the string's size to fit all contents.
 
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 append (std::string_view str)
 Append contents of a string_view to the string.
 
void pop_back ()
 Remove the last character from the string.
 

Member Typedef Documentation

◆ const_iterator

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

Definition at line 68 of file small_string.hpp.

◆ iterator

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

Definition at line 66 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 137 of file small_string.hpp.

Member Function Documentation

◆ append()

template<std::size_t N>
void utils::SmallString< N >::append ( std::string_view str)

Append contents of a string_view to the string.

Definition at line 258 of file small_string.hpp.

◆ 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 187 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 181 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 243 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 248 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 198 of file small_string.hpp.

◆ begin() [2/2]

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

Definition at line 193 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 287 of file small_string.hpp.

◆ clear()

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

Clear the string.

Definition at line 297 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 218 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 223 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 228 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 208 of file small_string.hpp.

◆ end() [2/2]

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

Definition at line 203 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 233 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 238 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 140 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 145 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 176 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 171 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 264 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 253 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 292 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 269 of file small_string.hpp.

◆ resize_and_overwrite()

template<std::size_t N>
template<class Operation >
void utils::SmallString< N >::resize_and_overwrite ( std::size_t size,
Operation op )

Resize the string. Use op to write into the string and replace a sequence of characters.

Definition at line 275 of file small_string.hpp.

◆ shrink_to_fit()

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

Shrink the string's size to fit all contents.

Definition at line 282 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 213 of file small_string.hpp.


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