[string.ops] (original) (raw)
27 Strings library [strings]
27.4 String classes [string.classes]
27.4.3 Class template basic_string [basic.string]
27.4.3.8 String operations [string.ops]
27.4.3.8.1 Accessors [string.accessors]
constexpr const charT* c_str() const noexcept;constexpr const charT* data() const noexcept;
Returns: A pointer p such that p + i == addressof(operator[](i)) for eachi in [0, size()].
Complexity: Constant time.
Remarks: The program shall not modify any of the values stored in the character array; otherwise, the behavior is undefined.
constexpr charT* data() noexcept;
Returns: A pointer p such that p + i == addressof(operator[](i)) for eachi in [0, size()].
Complexity: Constant time.
Remarks: The program shall not modify the value stored at p + size()to any value other than charT(); otherwise, the behavior is undefined.
constexpr operator basic_string_view<charT, traits>() const noexcept;
Effects: Equivalent to:return basic_string_view<charT, traits>(data(), size());
constexpr allocator_type get_allocator() const noexcept;
Returns: A copy of theAllocatorobject used to construct the string or, if that allocator has been replaced, a copy of the most recent replacement.
27.4.3.8.2 Searching [string.find]
Let F be one offind, rfind, find_first_of, find_last_of,find_first_not_of, and find_last_not_of.
- Each member function of the formconstexpr size_type F(const basic_string& str, size_type pos) const noexcept;has effects equivalent to:return F(basic_string_view<charT, traits>(str), pos);
- Each member function of the formconstexpr size_type F(const charT* s, size_type pos) const;has effects equivalent to:return F(basic_string_view<charT, traits>(s), pos);
- Each member function of the formconstexpr size_type F(const charT* s, size_type pos, size_type n) const;has effects equivalent to:return F(basic_string_view<charT, traits>(s, n), pos);
- Each member function of the formconstexpr size_type F(charT c, size_type pos) const noexcept;has effects equivalent to:return F(basic_string_view<charT, traits>(addressof(c), 1), pos);
template<class T> constexpr size_type find(const T& t, size_type pos = 0) const noexcept(_see below_);template<class T> constexpr size_type rfind(const T& t, size_type pos = npos) const noexcept(_see below_);template<class T> constexpr size_type find_first_of(const T& t, size_type pos = 0) const noexcept(_see below_);template<class T> constexpr size_type find_last_of(const T& t, size_type pos = npos) const noexcept(_see below_);template<class T> constexpr size_type find_first_not_of(const T& t, size_type pos = 0) const noexcept(_see below_);template<class T> constexpr size_type find_last_not_of(const T& t, size_type pos = npos) const noexcept(_see below_);
Constraints:
- is_convertible_v<const T&, basic_string_view<charT, traits>> istrue and
- is_convertible_v<const T&, const charT*> isfalse.
Effects: Let G be the name of the function.
Equivalent to:basic_string_view<charT, traits> s = *this, sv = t;return s.G(sv, pos);
Remarks: The exception specification is equivalent tois_nothrow_convertible_v<const T&, basic_string_view<charT, traits>>.
27.4.3.8.3 basic_string::substr [string.substr]
constexpr basic_string substr(size_type pos = 0, size_type n = npos) const &;
Effects: Equivalent to: return basic_string(*this, pos, n);
constexpr basic_string substr(size_type pos = 0, size_type n = npos) &&;
Effects: Equivalent to: return basic_string(std::move(*this), pos, n);
27.4.3.8.4 basic_string::compare [string.compare]
template<class T> constexpr int compare(const T& t) const noexcept(_see below_);
Constraints:
- is_convertible_v<const T&, basic_string_view<charT, traits>> istrue and
- is_convertible_v<const T&, const charT*> isfalse.
Effects: Equivalent to: return basic_string_view<charT, traits>(*this).compare(t);
Remarks: The exception specification is equivalent tois_nothrow_convertible_v<const T&, basic_string_view<charT, traits>>.
template<class T> constexpr int compare(size_type pos1, size_type n1, const T& t) const;
Constraints:
- is_convertible_v<const T&, basic_string_view<charT, traits>> istrue and
- is_convertible_v<const T&, const charT*> isfalse.
Effects: Equivalent to:return basic_string_view<charT, traits>(*this).substr(pos1, n1).compare(t);
template<class T> constexpr int compare(size_type pos1, size_type n1, const T& t, size_type pos2, size_type n2 = npos) const;
Constraints:
- is_convertible_v<const T&, basic_string_view<charT, traits>> istrue and
- is_convertible_v<const T&, const charT*> isfalse.
Effects: Equivalent to:basic_string_view<charT, traits> s = *this, sv = t;return s.substr(pos1, n1).compare(sv.substr(pos2, n2));
constexpr int compare(const basic_string& str) const noexcept;
Effects: Equivalent to:return compare(basic_string_view<charT, traits>(str));
constexpr int compare(size_type pos1, size_type n1, const basic_string& str) const;
Effects: Equivalent to:return compare(pos1, n1, basic_string_view<charT, traits>(str));
constexpr int compare(size_type pos1, size_type n1, const basic_string& str, size_type pos2, size_type n2 = npos) const;
Effects: Equivalent to:return compare(pos1, n1, basic_string_view<charT, traits>(str), pos2, n2);
constexpr int compare(const charT* s) const;
Effects: Equivalent to:return compare(basic_string_view<charT, traits>(s));
constexpr int compare(size_type pos, size_type n1, const charT* s) const;
Effects: Equivalent to: return compare(pos, n1, basic_string_view<charT, traits>(s));
constexpr int compare(size_type pos, size_type n1, const charT* s, size_type n2) const;
Effects: Equivalent to: return compare(pos, n1, basic_string_view<charT, traits>(s, n2));
27.4.3.8.5 basic_string::starts_with [string.starts.with]
constexpr bool starts_with(basic_string_view<charT, traits> x) const noexcept;constexpr bool starts_with(charT x) const noexcept;constexpr bool starts_with(const charT* x) const;
Effects: Equivalent to:return basic_string_view<charT, traits>(data(), size()).starts_with(x);
27.4.3.8.6 basic_string::ends_with [string.ends.with]
constexpr bool ends_with(basic_string_view<charT, traits> x) const noexcept;constexpr bool ends_with(charT x) const noexcept;constexpr bool ends_with(const charT* x) const;
Effects: Equivalent to:return basic_string_view<charT, traits>(data(), size()).ends_with(x);
27.4.3.8.7 basic_string::contains [string.contains]
constexpr bool contains(basic_string_view<charT, traits> x) const noexcept;constexpr bool contains(charT x) const noexcept;constexpr bool contains(const charT* x) const;
Effects: Equivalent to:return basic_string_view<charT, traits>(data(), size()).contains(x);