[string.view.ops] (original) (raw)

21 Strings library [strings]

21.4 String view classes [string.view]

21.4.3 Class template basic_­string_­view [string.view.template]

21.4.3.7 String operations [string.view.ops]

constexpr size_type copy(charT* s, size_type n, size_type pos = 0) const;

Let rlen be the smaller of n and size() - pos.

Preconditions: [s, s + rlen) is a valid range.

Effects: Equivalent to traits​::​copy(s, data() + pos, rlen).

Throws: out_­of_­range if pos > size().

constexpr basic_string_view substr(size_type pos = 0, size_type n = npos) const;

Let rlen be the smaller of n and size() - pos.

Effects: Determines rlen, the effective length of the string to reference.

Returns: basic_­string_­view(data() + pos, rlen).

Throws: out_­of_­range if pos > size().

constexpr int compare(basic_string_view str) const noexcept;

Let rlen be the smaller of size() and str.size().

Effects: Determines rlen, the effective length of the strings to compare.

The function then compares the two strings by calling traits​::​compare(data(), str.data(), rlen).

Returns: The nonzero result if the result of the comparison is nonzero.

Otherwise, returns a value as indicated in Table 70.

Table 70: compare() results [tab:string.view.compare]

🔗 Condition Return Value
🔗 size() < str.size() < 0
🔗 size() == str.size() 0
🔗 size() > str.size() > 0

constexpr int compare(size_type pos1, size_type n1, basic_string_view str) const;

Effects: Equivalent to: return substr(pos1, n1).compare(str);

constexpr int compare(size_type pos1, size_type n1, basic_string_view str, size_type pos2, size_type n2) const;

Effects: Equivalent to: return substr(pos1, n1).compare(str.substr(pos2, n2));

constexpr int compare(const charT* s) const;

Effects: Equivalent to: return compare(basic_­string_­view(s));

constexpr int compare(size_type pos1, size_type n1, const charT* s) const;

Effects: Equivalent to: return substr(pos1, n1).compare(basic_­string_­view(s));

constexpr int compare(size_type pos1, size_type n1, const charT* s, size_type n2) const;

Effects: Equivalent to: return substr(pos1, n1).compare(basic_­string_­view(s, n2));

constexpr bool starts_with(basic_string_view x) const noexcept;

Effects: Equivalent to: return substr(0, x.size()) == x;

constexpr bool starts_with(charT x) const noexcept;

Effects: Equivalent to: return !empty() && traits​::​eq(front(), x);

constexpr bool starts_with(const charT* x) const;

Effects: Equivalent to: return starts_­with(basic_­string_­view(x));

constexpr bool ends_with(basic_string_view x) const noexcept;

Effects: Equivalent to:return size() >= x.size() && compare(size() - x.size(), npos, x) == 0;

constexpr bool ends_with(charT x) const noexcept;

Effects: Equivalent to: return !empty() && traits​::​eq(back(), x);

constexpr bool ends_with(const charT* x) const;

Effects: Equivalent to: return ends_­with(basic_­string_­view(x));