Класс 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_view
wstring_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++ предоставляет следующие типдефы для специализаций этого шаблона.
string_view
для элементов типаchar
wstring_view
дляwchar_t
u16string_view
дляchar16_t
u32string_view
дляchar32_t
.
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_view s неизменяемы.) |
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_with C++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_with C++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
Значение 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++