27 using size_type = std::allocator_traits<allocator_type>::size_type;
36 explicit StringRef(
const char *s) : base_(s), len_(strlen(s)) {}
37 constexpr StringRef(
const char *s,
size_t n) : base_(s), len_(n) {}
38 template<
typename CharT>
39 constexpr StringRef(
const CharT *s,
size_t n) : base_(reinterpret_cast<const char *>(s)), len_(n) {}
40 template<
typename InputIt>
42 : base_(reinterpret_cast<const char *>(&*first)), len_(std::distance(first, last)) {}
43 template<
typename InputIt>
45 : base_(reinterpret_cast<const char *>(first)), len_(std::distance(first, last)) {}
46 template<
typename CharT,
size_t N>
constexpr static StringRef from_lit(
const CharT (&s)[N]) {
69 constexpr const char *
c_str()
const {
return base_; }
71 constexpr bool empty()
const {
return len_ == 0; }
74 std::string
str()
const {
return std::string(base_, len_); }
75 const uint8_t *
byte()
const {
return reinterpret_cast<const uint8_t *
>(base_); }
77 operator std::string()
const {
return str(); }
85 return lhs.
size() == rhs.
size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs));
89 return lhs.
size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs));
95 return lhs.
size() == strlen(rhs) && std::equal(std::begin(lhs), std::end(lhs), rhs);
111 return std::lexicographical_compare(std::begin(lhs), std::end(lhs), std::begin(rhs), std::end(rhs));
120 auto str = std::string(lhs);
126 auto str = lhs.
str();
StringRef is a reference to a string owned by something else.
StringRef(const std::string &s)
std::allocator< char > allocator_type
std::reverse_iterator< const_iterator > const_reverse_iterator
const_reverse_iterator crend() const
constexpr const char * c_str() const
constexpr StringRef(const CharT *s, size_t n)
std::char_traits< char > traits_type
const value_type * const_pointer
traits_type::char_type value_type
constexpr const_iterator cend() const
constexpr const_reference operator[](size_type pos) const
constexpr const_iterator begin() const
constexpr StringRef(const char *s, size_t n)
constexpr bool empty() const
const_reverse_iterator rbegin() const
constexpr size_type size() const
static constexpr StringRef from_lit(const CharT(&s)[N])
constexpr const_iterator end() const
std::allocator_traits< allocator_type >::size_type size_type
std::allocator_traits< allocator_type >::difference_type difference_type
StringRef(InputIt first, InputIt last)
static StringRef from_maybe_nullptr(const char *s)
const value_type & const_reference
const_reverse_iterator rend() const
constexpr const_iterator cbegin() const
const_reverse_iterator crbegin() const
const_pointer const_iterator
const uint8_t * byte() const
StringRef(InputIt *first, InputIt *last)
Providing packet encoding functions for exchanging data with a remote host.
std::string operator+(const char *lhs, const StringRef &rhs)
bool operator==(optional< T > const &x, optional< U > const &y)
bool operator!=(optional< T > const &x, optional< U > const &y)
void convertToJson(const StringRef &src, JsonVariant dst)
std::string & operator+=(std::string &lhs, const StringRef &rhs)
bool operator<(optional< T > const &x, optional< U > const &y)