std::basic_string_view<CharT,Traits>:: data
|
constexpr
const_pointer data
(
)
const
noexcept
;
|
(начиная с C++17) | |
Возвращает указатель на базовый массив символов. Указатель таков, что диапазон
[
data
(
)
,
data
(
)
+
size
(
)
)
является действительным, и значения в нем соответствуют значениям представления.
Содержание |
Параметры
(нет)
Возвращаемое значение
Указатель на базовый массив символов.
Сложность
Константа.
Примечания
В отличие от
std::basic_string::data()
и строковых литералов,
std::basic_string_view::data()
возвращает указатель на буфер, который не обязательно нуль-терминирован, например, представление подстроки (например, из
remove_suffix
). Поэтому обычно ошибкой является передача
data()
в процедуру, которая принимает только
const
CharT
*
и ожидает нуль-терминированную строку.
Пример
#include <cstring> #include <cwchar> #include <iostream> #include <string> #include <string_view> int main() { std::wstring_view wcstr_v = L"xyzzy"; std::cout << std::wcslen(wcstr_v.data()) << '\n'; // OK: the underlying character array is null-terminated char array[3] = {'B', 'a', 'r'}; std::string_view array_v(array, sizeof array); // std::cout << std::strlen(array_v.data()) << '\n'; // error: the underlying character array is not null-terminated std::string str(array_v.data(), array_v.size()); // OK std::cout << std::strlen(str.data()) << '\n'; // OK: the underlying character array of a std::string is always null-terminated }
Вывод:
5 3
Смотрите также
|
обращается к первому символу
(public member function) |
|
|
обращается к последнему символу
(public member function) |
|
|
возвращает указатель на первый символ строки
(public member function of
std::basic_string<CharT,Traits,Allocator>
)
|