Класс basic_string_view

Шаблон basic_string_view<charT> класса был добавлен в C++17, чтобы служить безопасным и эффективным способом для функции принимать различные несвязанные типы строк без необходимости шаблонизировать эти типы. Класс содержит указатель, не принадлежащий к непрерывной последовательности символьных данных, и длину, указывающую количество символов в последовательности. Предположение о том, завершается ли последовательность null, не предполагается.

Стандартная библиотека определяет несколько специализаций на основе типа элементов:

  • string_view
  • wstring_view
  • u16string_view
  • u32string_view

В описании basic_string_view минимального общего интерфейса, необходимого для чтения строковых данных. Он предоставляет константный доступ к базовым данным; он не копирует (за исключением copy функции). Данные могут содержать значения NULL (\0) в любой позиции. У объекта basic_string_view нет контроля над временем существования объекта. Это ответственность вызывающего средства, чтобы убедиться, что базовые строковые данные допустимы.

Функция, которая принимает параметр типа string_view , может быть выполнена для работы с любым строковым типом, не делая функцию в шаблоне или ограничивающей функцию определенным подмножеством строковых типов. Единственное требование заключается в том, что неявное преобразование существует из типа string_viewстроки в . Все стандартные типы строк неявно преобразуются в тип string_view , содержащий один и тот же тип элемента. Другими словами, std::string преобразуемая в нее string_viewwstring_view.

В следующем примере показана функция f , не использующую шаблон, которая принимает параметр типа wstring_view. Его можно вызывать с аргументами типа std::wstring, wchar_t*и winrt::hstring.

// compile with: /std:c++17
// string_view that uses elements of wchar_t
void f(wstring_view);

// pass a std::wstring:
const std::wstring& s { L"Hello" };
f(s);

// pass a C-style null-terminated string (string_view is not null-terminated):
const wchar_t* ns = L"Hello";
f(ns);

// pass a C-style character array of len characters (excluding null terminator):
const wchar_t* cs { L"Hello" };
size_t len { 5 };
f({cs,len});

// pass a WinRT string
winrt::hstring hs { L"Hello" };
f(hs);

Синтаксис

template <class CharType, class Traits = char_traits<CharType>>
class basic_string_view;

Параметры

CharType
Тип символов, хранящихся в .basic_string_view Стандартная библиотека C++ предоставляет следующие типдефы для специализаций этого шаблона.

Traits
По умолчанию — char_traits<CharType>.

Конструкторы

Конструктор Description
basic_string_view Создает пустой basic_string_view объект или указывает на все или часть данных другого объекта строки или массив символов в стиле C.

Определения типов

Введите имя Description
const_iterator Итератор случайного доступа, который может считывать const элементы.
const_pointer using const_pointer = const value_type*;
const_reference using const_reference = const value_type&;
const_reverse_iterator using const_reverse_iterator = std::reverse_iterator<const_iterator>;
difference_type using difference_type = ptrdiff_t;
iterator using iterator = const_iterator;
npos static constexpr size_type npos = size_type(-1);
pointer using pointer = value_type*;
reference using reference = value_type&;
reverse_iterator using reverse_iterator = const_reverse_iterator;
size_type using size_type = size_t;
traits_type using traits_type = Traits;
value_type using value_type = CharType;

Операторы-члены

Operator Description
operator= Присваивает basic_string_view объекту строки или преобразуемой строке другому basic_string_viewобъекту.
operator[] Возвращает элемент по указанному индексу.

Функции элементов

Функция-член Description
at const_reference Возвращает элемент в указанном расположении.
back const_reference Возвращает последний элемент.
begin Возвращает итератор, обращаюющийся к первому const элементу. (basic_string_views неизменяемы.)
cbegin Эквивалентно begin.
cend Возвращает итератор, указывающий на один прошлый const последний элемент.
copy Копирует по крайней мере указанное количество символов из индексированного положения в источнике basic_string_view в целевой массив символов. (Не рекомендуется. Используйте _Copy_s вместо этого.)
_Copy_s Безопасная функция копирования CRT.
compare Сравнивает basic_string_view значение с заданным basic_string_view , чтобы определить, равны ли они, или если один из них лексографически меньше другого.
crbegin Эквивалентно rbegin.
crend Эквивалентно rend.
data Возвращает необработанный указатель, не принадлежащий к последовательности символов.
empty Проверяет, содержатся ли basic_string_view символы.
end Эквивалентно cend.
ends_withC++20 Проверьте, заканчивается ли строковое представление указанным суффиксом.
find Выполняет поиск в направлении вперед для первого вхождения подстроки, которая соответствует указанной последовательности символов.
find_first_not_of Выполняет поиск первого символа, который не является элементом указанного basic_string_view или преобразуемого строкового объекта.
find_first_of Выполняет поиск первого символа, соответствующего любому элементу указанного basic_string_view или преобразуемого строкового объекта.
find_last_not_of Выполняет поиск последнего символа, который не является элементом указанного basic_string_view или преобразуемого строкового объекта.
find_last_of Выполняет поиск последнего символа, который является элементом указанного basic_string_view или преобразуемого строкового объекта.
front Возвращает первый const_reference элемент.
length Возвращает текущее число элементов.
max_size Возвращает максимальное количество символов, basic_string_view которые могут содержаться.
rbegin const Возвращает итератор, который обращается к первому элементу в обратном basic_string_viewнаправлении.
remove_prefix Перемещает указатель вперед по указанному числу элементов.
remove_suffix Уменьшает размер представления по указанному количеству элементов, начиная с задней части.
rend Возвращает итератор, указывающий const на один прошлый последний элемент в обратном basic_string_view.
rfind basic_string_view Выполняет поиск в обратном направлении первого вхождения подстроки, которая соответствует указанной последовательности символов.
size Возвращает текущее число элементов.
starts_withC++20 Проверьте, начинается ли строковое представление с заданным префиксом.
substr Возвращает подстроку указанной длины, начиная с указанного индекса.
swap Обмен содержимого двух basic_string_view объектов.

Замечания

Если функция запрашивается создать последовательность дольше max_size элементов, функция сообщает об ошибке длины путем создания объекта типа length_error.

Требования

std:c++17 или более поздняя версия.

Заголовок.<string_view>

Пространство именstd:

basic_string_view::at

const_reference Возвращает символ в указанном отсчитываемом от нуля индексе.

constexpr const_reference at(size_type offset) const;

Параметры

offset
Индекс элемента, на который необходимо ссылаться.

Возвращаемое значение

Символ const_reference в позиции, указанной индексом параметра.

Замечания

Первый элемент имеет индекс нулевого значения, а следующие элементы индексируются последовательно положительными целыми числами, поэтому basic_string_view длина n имеет элемент *n*th, индексируемый числом n - 1. at создает исключение для недопустимых индексов, в отличие operator[]от .

Как правило, мы рекомендуем использовать at такие последовательности, как std::vector и basic_string_view никогда не следует использовать. Недопустимый индекс, передаваемый последовательности, — это ошибка логики, которая должна быть обнаружена и исправлена во время разработки. Если программа не уверена, что его индексы действительны, она должна протестировать их, а не вызывать at() и полагаться на исключения для защиты от неосторожного программирования.

Дополнительные сведения см. в разделе basic_string_view::operator[].

Пример

// basic_string_view_at.cpp
// compile with: /EHsc
#include <string_view>
#include <iostream>

int main()
{
    using namespace std;

    const string_view  str1("Hello world");
    string_view::const_reference refStr2 = str1.at(8); // 'r'
}

basic_string_view::back

const_reference Возвращает последний элемент.

constexpr const_reference back() const;

Возвращаемое значение

До const_reference последнего элемента в элементе basic_string_view.

Замечания

Создает исключение, если пустой basic_string_view .

Помните, что после basic_string_view изменения, например путем вызова remove_suffix, элемент, возвращаемый этой функцией, больше не является последним элементом в базовых данных.

Пример

Объект, string_view созданный с помощью строкового литерала C, не включает завершающий значение NULL. Поэтому в следующем примере back возвращается 'p' и не возвращается '\0'.

char c[] = "Help"; // char[5]
string_view sv{ c };
cout << sv.size(); // size() == 4
cout << sv.back() << endl; // p

Внедренные значения NULL обрабатываются как любой другой символ:

string_view e = "embedded\0nulls"sv;
cout << boolalpha << (e.back() == 's'); // true

basic_string_view::basic_string_view

Создает документ basic_string_view.

constexpr basic_string_view() noexcept;
constexpr basic_string_view(const basic_string_view&) noexcept = default;
constexpr basic_string_view(const charT* str);
constexpr basic_string_view(const charT* str, size_type len);

Параметры

str
Указатель на значения символов.

len
Число символов, включаемых в представление.

Замечания

Конструкторы с параметром charT* предполагают, что входные данные завершаются значением NULL, но завершающий значение NULL не включается в параметр basic_string_view.

Можно также создать литерал basic_string_view . См. раздел operator"" sv.

basic_string_view::begin

Эквивалентно cbegin.

constexpr const_iterator begin() const noexcept;

Возвращаемое значение

const_iterator Возвращает адресацию первого элемента.

basic_string_view::cbegin

Возвращает адрес const_iterator первого элемента в диапазоне.

constexpr const_iterator cbegin() const noexcept;

Возвращаемое значение

Итератор случайного доступа const, который указывает на первый элемент диапазона или расположение прямо за концом пустого диапазона (cbegin() == cend() для пустого диапазона).

basic_string_view::cend

Возвращает адрес const_iterator расположения только за пределами последнего элемента в диапазоне.

constexpr const_iterator cend() const noexcept;

Возвращаемое значение

Итератор const с произвольным доступом, который указывает конец диапазона.

Замечания

Возвращаемое cend значение не должно быть разоменовывано.

basic_string_view::compare

Выполняет сравнение с учетом регистра с указанным basic_string_view (или преобразуемым типом строки), чтобы определить, равны ли два объекта или если один из них лексографически меньше другого. Операторы <string_view> используют эту функцию-член для сравнения.

constexpr int compare(basic_string_view strv) const noexcept;
constexpr int compare(size_type pos, size_type num, basic_string_view strv) const;
constexpr int compare(size_type pos, size_type num, basic_string_view strv, size_type offset, size_type num2) const;
constexpr int compare(const charT* ptr) const;
constexpr int compare(size_type pos, size_type num, const charT* ptr) const;
constexpr int compare(size_type pos, size_type num, const charT* ptr, size_type num2) const;

Параметры

strv
То basic_string_view , что нужно сравнить с этим basic_string_view.

pos
Индекс этого basic_string_view , с которого начинается сравнение.

num
Максимальное количество символов, basic_string_view которые необходимо сравнить.

num2
Максимальное число символов для strv сравнения.

offset
Индекс, strv с которого начинается сравнение.

ptr
Строка C, которая будет сравниваться с этим basic_string_view.

Возвращаемое значение

  • Отрицательное значение, если это basic_string_view меньше или меньше strv или ptr
  • Ноль, если две последовательности символов равны
  • Положительное значение, если это basic_string_view больше strv или ptr

Замечания

compare Функции-члены выполняют сравнение всех или частей каждой последовательности символов с учетом регистра.

Пример

// basic_string_view_compare.cpp
// compile with: /EHsc
#include <string_view>
#include <iostream>
#include <string>

using namespace std;

string to_alpha(int result)
{
   if (result < 0) return " less than ";
   else if (result == 0) return " equal to ";
   else return " greater than ";
}

int main()
{
   // The first member function compares
   // two string_views
   string_view sv_A("CAB");
   string_view sv_B("CAB");
   cout << "sv_A is " << sv_A << endl;
   cout << "sv_B is " << sv_B << endl;
   int comp1 = sv_A.compare(sv_B);
   cout << "sv_A is" << to_alpha(comp1) << "sv_B.\n";

   // The second member function compares part of
   // an operand string_view to another string_view
   string_view sv_C("AACAB");
   string_view sv_D("CAB");
   cout << "sv_C is: " << sv_C << endl;
   cout << "sv_D is: " << sv_D << endl;
   int comp2a = sv_C.compare(2, 3, sv_D);
   cout << "The last three characters of sv_C are"
       << to_alpha(comp2a) << "sv_D.\n";

   int comp2b = sv_C.compare(0, 3, sv_D);
   cout << "The first three characters of sv_C are"
       << to_alpha(comp2b) << "sv_D.\n";

   // The third member function compares part of
   // an operand string_view to part of another string_view
   string_view sv_E("AACAB");
   string_view sv_F("DCABD");
   cout << "sv_E: " << sv_E << endl;
   cout << "sv_F is: " << sv_F << endl;
   int comp3a = sv_E.compare(2, 3, sv_F, 1, 3);
   cout << "The three characters from position 2 of sv_E are"
       << to_alpha(comp3a)
       << "the 3 characters of sv_F from position 1.\n";

   // The fourth member function compares
   // an operand string_view to a C string
   string_view sv_G("ABC");
   const char* cs_A = "DEF";
   cout << "sv_G is: " << sv_G << endl;
   cout << "cs_A is: " << cs_A << endl;
   int comp4a = sv_G.compare(cs_A);
   cout << "sv_G is" << to_alpha(comp4a) << "cs_A.\n";

   // The fifth member function compares part of
   // an operand string_view to a C string
   string_view sv_H("AACAB");
   const char* cs_B = "CAB";
   cout << "sv_H is: " << sv_H << endl;
   cout << "cs_B is: " << cs_B << endl;
   int comp5a = sv_H.compare(2, 3, cs_B);
   cout << "The last three characters of sv_H are"
      << to_alpha(comp5a) << "cs_B.\n";

   // The sixth member function compares part of
   // an operand string_view to part of an equal length of
   // a C string
   string_view sv_I("AACAB");
   const char* cs_C = "ACAB";
   cout << "sv_I is: " << sv_I << endl;
   cout << "cs_C: " << cs_C << endl;
   int comp6a = sv_I.compare(1, 3, cs_C, 3);
   cout << "The 3 characters from position 1 of sv_I are"
      << to_alpha(comp6a) << "the first 3 characters of cs_C.\n";
}
sv_A is CAB
sv_B is CAB
sv_A is equal to sv_B.
sv_C is: AACAB
sv_D is: CAB
The last three characters of sv_C are equal to sv_D.
The first three characters of sv_C are less than sv_D.
sv_E: AACAB
sv_F is: DCABD
The three characters from position 2 of sv_E are equal to the 3 characters of sv_F from position 1.
sv_G is: ABC
cs_A is: DEF
sv_G is less than cs_A.
sv_H is: AACAB
cs_B is: CAB
The last three characters of sv_H are equal to cs_B.
sv_I is: AACAB
cs_C: ACAB
The 3 characters from position 1 of sv_I are equal to the first 3 characters of cs_C.

basic_string_view::copy

Копирует по крайней мере указанное количество символов из индексированного положения в источнике basic_string_view в целевой массив символов. Вместо этого рекомендуется использовать безопасную функцию basic_string_view::_Copy_s .

size_type copy(charT* ptr, size_type count, size_type offset = 0) const;

Параметры

ptr
Целевой массив символов, в который должны быть скопированы элементы.

count
Число символов, копируемых в большинстве случаев из источника basic_string_view.

offset
Начальная позиция в источнике basic_string_view , из которого должны быть сделаны копии.

Возвращаемое значение

Число скопированных символов.

Замечания

Пустой символ не добавляется в конец копии.

basic_string_view::_Copy_s

Безопасная функция копирования CRT, используемая вместо copy.

size_type _Copy_s(
    value_type* dest,
    size_type dest_size,
    size_type count,
    size_type _Off = 0) const;

Параметры

dest
Целевой массив символов, в который должны быть скопированы элементы.

dest_size
Размер dest.

count Число символов, копируемых в большинстве случаев из исходной строки.

_Off
Начальная позиция в исходной строке, из которой должны быть сделаны копии.

Возвращаемое значение

Число скопированных символов.

Замечания

Пустой символ не добавляется в конец копии.

Дополнительные сведения см. в разделе c-runtime-library/security-features-in-the-crt.

basic_string_view::crbegin

Возвращает объект const_reverse_iterator , который обращается к первому элементу в обратном basic_string_viewнаправлении.

constexpr const_reverse_iterator crbegin() const noexcept;

Возвращаемое значение

Объект, const_reverse_iterator который обращается к первому элементу в обратном basic_string_viewнаправлении.

basic_string_view::crend

Эквивалентно rend.

constexpr const_reverse_iterator crend() const noexcept;

Возвращаемое значение

Возвращает адрес const_reverse_iterator , который обращается к одному после конца обратного basic_string_view.

basic_string_view::data

Возвращает необработанный указатель, не принадлежащий константной последовательности символов объекта, который использовался для создания basic_string_viewобъекта.

constexpr value_type *data() const noexcept;

Возвращаемое значение

Указатель на констант к первому элементу последовательности символов.

Замечания

Указатель не может изменить символы.

Последовательность basic_string_view символов не обязательно завершается значением NULL. Тип возвращаемого значения data не является допустимой строкой C, так как значение NULL не добавляется. Символ NULL \0 не имеет специального значения в объекте типа basic_string_view и может быть частью basic_string_view объекта так же, как и любой другой символ.

basic_string_view::empty

Проверяет, содержит ли basic_string_view символы или нет.

constexpr bool empty() const noexcept;

Возвращаемое значение

true Значение basic_string_view />, если объект не содержит символов; false если он имеет хотя бы один символ.

Замечания

Функция-член эквивалентна size() == 0.

basic_string_view::end

Возвращает случайный доступ const_iterator , указывающий на один из последних элементов.

constexpr const_iterator end() const noexcept;

Возвращаемое значение

Возвращает случайный доступ const_iterator , указывающий на один из последних элементов.

Замечания

endиспользуется для проверки того, достигла ли const_iterator его конца.basic_string_view Возвращаемое end значение не должно быть разоменовывано.

basic_string_view::ends_with

Проверьте, заканчивается ли строковое представление указанным суффиксом.

bool ends_with(const CharType c) const noexcept;
bool ends_with(const CharType* const x) const noexcept;
bool ends_with(const basic_string_view sv) const noexcept;

Параметры

c
Суффикс одного символа для поиска.

sv
Строковое представление, содержащее суффикс для поиска.
Можно передать объект std::basic_string, который преобразуется в basic_string_view.

x
Строка символов, завершающая значение NULL, содержащая суффикс для поиска.

Возвращаемое значение

true Значение , если строковое представление заканчивается указанным суффиксом; false Иначе.

Замечания

ends_with() новый в C++20. Чтобы использовать его, укажите или более поздний /std:c++20 параметр компилятора.

Чтобы starts_with проверка, если строковое представление начинается с указанного префикса.

Пример

// Requires /std:c++20 or /std:c++latest
#include <string>
#include <iostream>

int main()
{
    std::cout << std::boolalpha; // so booleans show as 'true'/'false'  
    std::cout << std::string_view("abcdefg").ends_with('g') << '\n';
    std::cout << std::string_view("abcdefg").ends_with("eFg") << '\n';

    std::basic_string<char> str2 = "efg";
    std::cout << std::string_view("abcdefg").ends_with(str2);

    return 0;
}
true
false
true

basic_string_view::find

basic_string_view Выполняет поиск в направлении вперед для первого вхождения символа или подстроки, которая соответствует указанной последовательности символов.

constexpr size_type find(basic_string_view str, size_type offset = 0) const noexcept;
constexpr size_type find(charT chVal, size_type offset = 0) const noexcept;
constexpr size_type find(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find(const charT* ptr, size_type offset = 0) const;

Параметры

str
Значение basic_string_view , для которого выполняется поиск функции-члена.

chVal
Значение символа, для которого следует искать функцию-член.

offset
Индекс, с которого начинается поиск.

ptr
Строка C, для которой выполняется поиск функции-члена.

count
Число символов в ptr, подсчет от первого символа.

Возвращаемое значение

Индекс первого символа искомой подстроки, если она успешно найдена; в противном случае — npos.

basic_string_view::find_first_not_of

Выполняет поиск первого символа, который не является элементом указанного basic_string_view или преобразуемого строкового объекта.

constexpr size_type find_first_not_of(basic_string_view str, size_type offset = 0) const noexcept;
constexpr size_type find_first_not_of(charT chVal, size_type offset = 0) const noexcept;
constexpr size_type find_first_not_of(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find_first_not_of(const charT* ptr, size_type offset = 0) const;

Параметры

str
Значение basic_string_view , для которого выполняется поиск функции-члена.

chVal
Значение символа, для которого следует искать функцию-член.

offset
Индекс, с которого начинается поиск.

ptr
Строка C, для которой выполняется поиск функции-члена.

count
Число символов, отсчитываемых от первого символа, в строке C, для которой выполняется поиск функции-члена.

Возвращаемое значение

Индекс первого символа искомой подстроки, если она успешно найдена; в противном случае — npos.

basic_string_view::find_first_of

Выполняет поиск первого символа, соответствующего любому элементу указанного basic_string_viewэлемента.

constexpr size_type find_first_of(basic_string_view str, size_type offset = 0) const noexcept;
constexpr size_type find_first_of(charT chVal, size_type offset = 0) const noexcept;
constexpr size_type find_first_of(const charT* str, size_type offset, size_type count) const;
constexpr size_type find_first_of(const charT* str, size_type offset = 0) const;

Параметры

chVal
Значение символа, для которого следует искать функцию-член.

offset
Индекс, с которого начинается поиск.

ptr
Строка C, для которой выполняется поиск функции-члена.

count
Число символов, отсчитываемых от первого символа, в строке C, для которой выполняется поиск функции-члена.

str
Значение basic_string_view , для которого выполняется поиск функции-члена.

Возвращаемое значение

Индекс первого символа искомой подстроки, если она успешно найдена; в противном случае — npos.

basic_string_view::find_last_not_of

Выполняет поиск последнего символа, который не является элементом указанного basic_string_viewэлемента.

constexpr size_type find_last_not_of(basic_string_view str, size_type offset = npos) const noexcept;
constexpr size_type find_last_not_of(charT chVal, size_type offset = npos) const noexcept;
constexpr size_type find_last_not_of(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find_last_not_of(const charT* ptr, size_type offset = npos) const;

Параметры

str
Значение basic_string_view , для которого выполняется поиск функции-члена.

chVal
Значение символа, для которого следует искать функцию-член.

offset
Индекс, по которому выполняется поиск.

ptr
Строка C, для которой выполняется поиск функции-члена.

count
Число символов, отсчитываемых от первого символа, в ptr.

Возвращаемое значение

Индекс первого символа искомой подстроки, если она успешно найдена; в противном случае — string_view::npos.

basic_string_view::find_last_of

Выполняет поиск последнего символа, соответствующего любому элементу указанного basic_string_viewэлемента.

constexpr size_type find_last_of(basic_string_view str, size_type offset = npos) const noexcept;
constexpr size_type find_last_of(charT chVal, size_type offset = npos) const noexcept;
constexpr size_type find_last_of(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find_last_of(const charT* ptr, size_type offset = npos) const;

Параметры

str
Значение basic_string_view , для которого выполняется поиск функции-члена.

chVal
Значение символа, для которого следует искать функцию-член.

offset
Индекс, по которому выполняется поиск.

ptr
Строка C, для которой выполняется поиск функции-члена.

count
Число символов, отсчитываемых от первого символа, в строке C, для которой выполняется поиск функции-члена.

Возвращаемое значение

Индекс последнего символа искомой подстроки, если он был успешно найден; в противном случае — npos.

basic_string_view::front

Возвращает первый const_reference элемент.

constexpr const_reference front() const;

Возвращаемое значение

К const_reference первому элементу.

Замечания

Создает исключение, если пустой basic_string_view .

basic_string_view::length

Возвращает текущее число элементов.

constexpr size_type length() const noexcept;

Замечания

Функция-член совпадает с sizeфункцией-членом.

basic_string_view::max_size

Возвращает максимальное число символов, basic_string_view которые могут содержаться.

constexpr size_type max_size() const noexcept;

Возвращаемое значение

Максимальное количество символов, basic_string_view которые могут содержаться.

Замечания

Исключение типа length_error возникает, когда операция создает basic_string_view длину с большей max_size()длиной.

basic_string_view::operator=

Присваивает basic_string_view объекту строки или преобразуемой строке другому basic_string_viewобъекту.

constexpr basic_string_view& operator=(const basic_string_view&) noexcept = default;

Пример

   string_view s = "Hello";
   string_view s2 = s;

basic_string_view::operator[]

const_reference Предоставляет символ с указанным индексом.

constexpr const_reference operator[](size_type offset) const;

Параметры

offset
Индекс элемента, на который необходимо ссылаться.

Возвращаемое значение

Символ const_reference в позиции, указанной индексом параметра.

Замечания

Первый элемент имеет индекс нулевого значения, а следующие элементы индексируются последовательно положительными целыми числами, поэтому basic_string_view длина n имеет элемент *n*th, индексируемый числом n-1.

operator[] быстрее, чем функция-член at для предоставления доступа на чтение к элементам объекта basic_string_view.

operator[]не проверка, является ли индекс допустимым в качестве аргумента. Недопустимый индекс, operator[] переданный в результаты неопределенного поведения.

Возвращаемая ссылка может быть недопустима, если базовые строковые данные изменяются или удаляются объектом владения.

При компиляции с _ITERATOR_DEBUG_LEVEL набором 1 или 2 при попытке доступа к элементу за пределами границ среды basic_string_viewвыполнения возникнет ошибка. Дополнительные сведения см. в разделе Проверяемые итераторы.

basic_string_view::rbegin

const Возвращает итератор первому элементу в обратном basic_string_viewпорядке.

constexpr const_reverse_iterator rbegin() const noexcept;

Возвращаемое значение

Возвращает итератор случайного доступа к первому элементу в обратном порядке basic_string_view, обращаясь к последнему элементу в соответствующем неуправляемом элементе basic_string_view.

Замечания

rbegin используется с обратным basic_string_view так же, как begin используется с basic_string_view. rbegin можно использовать для итерации обратной итерации.

basic_string_view::remove_prefix

Перемещает указатель вперед по указанному числу элементов.

constexpr void remove_prefix(size_type n);

Замечания

Оставляет базовые данные неизменными. basic_string_view Перемещает указатель вперед по n элементам и задает для члена частных size данных значение size - n.

basic_string_view::remove_suffix

Уменьшает размер представления по указанному количеству элементов, начиная с задней части.

constexpr void remove_suffix(size_type n);

Замечания

Оставляет базовые данные и указатель на него без изменений. Задает для члена частных size данных значение size - n.

basic_string_view::rend

Возвращает итератор, указывающий const на один прошлый последний элемент в обратном basic_string_view.

constexpr reverse_iterator rend() const noexcept;

Возвращаемое значение

Обратный const итератор случайного доступа, указывающий на один прошлый последний элемент в обратном basic_string_view.

Замечания

rend используется с обратным basic_string_view так же, как end используется с basic_string_view. rend можно использовать для проверки того, достиг ли обратный итератор конца его basic_string_view. Возвращаемое rend значение не должно быть разоменовывано.

basic_string_view::rfind

basic_string_view Выполняет поиск в обратном направлении подстроки, которая соответствует указанной последовательности символов.

constexpr size_type rfind(basic_string_view str, size_type offset = npos) const noexcept;
constexpr size_type rfind(charT chVal, size_type offset = npos) const noexcept;
constexpr size_type rfind(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type rfind(const charT* ptr, size_type offset = npos) const;

Параметры

chVal
Значение символа, для которого следует искать функцию-член.

offset
Индекс, с которого начинается поиск.

ptr
Строка C, для которой выполняется поиск функции-члена.

count
Число символов, отсчитываемых от первого символа, в строке C, для которой выполняется поиск функции-члена.

str
Значение basic_string_view , для которого выполняется поиск функции-члена.

Возвращаемое значение

Индекс первого символа подстроки при успешном выполнении; в противном случае npos.

basic_string_view::size

Возвращает количество элементов в контейнере basic_string_view.

constexpr size_type size() const noexcept;

Возвращаемое значение

Длина basic_string_view.

Замечания

Объект basic_string_view может изменять длину, например по remove_prefix и remove_suffix. Так как это не изменяет базовые строковые данные, размер не basic_string_view обязательно является размером базовых данных.

basic_string_view::starts_with

Проверьте, начинается ли строковое представление с указанным префиксом.

bool starts_with(const CharType c) const noexcept;
bool starts_with(const CharType* const x) const noexcept;
bool starts_with(const basic_string_view sv) const noexcept;

Параметры

c
Префикс одного символа для поиска.

sv
Строковое представление, содержащее префикс для поиска.
Можно передать объект std::basic_string, который преобразуется в строковое представление.

x
Строка символов, завершающая значение NULL, содержащая префикс для поиска.

Возвращаемое значение

true Значение , если строка начинается с указанного префикса; false Иначе.

Замечания

starts_with() новый в C++20. Чтобы использовать его, укажите или более поздний std:c++20 параметр компилятора.

Чтобы ends_with узнать, заканчивается ли строка суффиксом.

Пример

// Requires /std:c++20 or /std:c++latest
#include <string>
#include <iostream>

int main()
{
    std::cout << std::boolalpha; // so booleans show as 'true'/'false'  
    std::cout << std::string_view("abcdefg").starts_with('b') << '\n';
    std::cout << std::string_view("abcdefg").starts_with("aBc") << '\n';

    std::basic_string<char> str2 = "abc";
    std::cout << std::string_view("abcdefg").starts_with(str2);

    return 0;
}
false
false
true

basic_string_view::substr

Возвращает значение basic_string_view , представляющее (не более чем) указанное число символов из указанной позиции.

constexpr basic_string_view substr(size_type offset = 0, size_type count = npos) const;

Параметры

offset
Индекс, на котором находится элемент в позиции, из которой выполняется копия, со значением по умолчанию 0.

count
Количество символов, включаемых в подстроку, если они присутствуют.

Возвращаемое значение

basic_string_view Объект, представляющий указанный вложенный элемент.

basic_string_view::swap

Обмен двумя basic_string_viewзначениями, другими словами, указателями на базовые строковые данные и значения размера.

constexpr void swap(basic_string_view& sv) noexcept;

Параметры

sv
Источник basic_string_view , значения указателя и размера которого должны быть обмениваются значениями назначения basic_string_view.

См. также

<string_view>
Потокобезопасность в стандартной библиотеке C++