Класс string_view
Класс string_view представляет собой
легковесное невладеющее представление
последовательности символов. В отличие от
string, объект string_view
не владеет данными и не управляет их временем
жизни - он лишь хранит указатель на первый
символ и длину последовательности. Это
позволяет избежать лишнего копирования строк
при передаче их в функции. Первый параметр
конструктора - указатель на строку или другой
string_view, а второй - количество
символов, которое следует охватить.
Для использования класса необходимо
подключить заголовочный файл string_view.
Синтаксис
string_view sv;
string_view sv(str);
string_view sv(str, count);
Пример
Давайте создадим объект string_view
на основе строки и выведем его содержимое
и длину:
#include <iostream>
#include <string_view>
using namespace std;
int main()
{
string_view sv = "abcde";
cout << sv << endl;
cout << sv.size() << endl;
return 0;
}
Результат выполнения кода:
"abcde"
5
Пример
Давайте создадим объект string_view
на основе строки, охватив только первые
3 символа:
#include <iostream>
#include <string_view>
using namespace std;
int main()
{
string str = "abcde";
string_view sv(str.data(), 3);
cout << sv << endl;
return 0;
}
Результат выполнения кода:
"abc"
Пример
Давайте передадим string_view в
функцию, чтобы избежать копирования строки:
#include <iostream>
#include <string_view>
using namespace std;
void print(string_view sv)
{
cout << sv << endl;
}
int main()
{
string str = "12345";
print(str);
print("abcde");
return 0;
}
Результат выполнения кода:
12345
"abcde"
Смотрите также
-
метод
size,
который возвращает длину представления -
метод
substr,
который вырезает подстроку из представления -
метод
find,
который ищет подстроку в представлении -
метод
starts_with,
который проверяет начало представления