Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>:: data

From cppreference.net
std::basic_string
const CharT * data ( ) const ;
(1) (noexcept начиная с C++11)
(constexpr начиная с C++20)
CharT * data ( ) noexcept ;
(2) (начиная с C++17)
(constexpr начиная с C++20)

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

[ data ( ) , data ( ) + size ( ) )

(до C++11)

[ data ( ) , data ( ) + size ( ) ]

(начиная с C++11)

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

Возвращаемый массив не обязательно должен быть нуль-терминированным.

Если empty() возвращает true , указатель является ненулевым, но его не следует разыменовывать.

(до C++11)

Возвращаемый массив является нуль-терминированным, то есть data() и c_str() выполняют одинаковую функцию.

Если empty() возвращает true , указатель указывает на одиночный нулевой символ.

(начиная с C++11)

Указатель, полученный из data() , может стать недействительным из-за:

1) Изменение массива символов, доступ к которому осуществляется через константную перегрузку data , приводит к неопределённому поведению.
2) Изменение конечного нулевого терминатора, хранящегося в data() + size() на любое значение, отличное от CharT() приводит к неопределенному поведению.

Содержание

Параметры

(нет)

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

Указатель на базовое хранилище символов.

data ( ) [ i ] == operator [ ] ( i ) для каждого i в диапазоне [ 0 , size ( ) ) .

(до C++11)

data ( ) + i == std:: addressof ( operator [ ] ( i ) ) для каждого i в диапазоне [ 0 , size ( ) ] .

(начиная с C++11)

Сложность

Константа.

Пример

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
int main()
{
    std::string const s("Emplary");
    assert(s.size() == std::strlen(s.data()));
    assert(std::equal(s.begin(), s.end(), s.data()));
    assert(std::equal(s.data(), s.data() + s.size(), s.begin()));
    assert('\0' == *(s.data() + s.size()));
}
Переведен только текст "Run this code" на "Запустить этот код". Все HTML-теги, атрибуты и содержимое внутри тегов `
` сохранены без изменений. C++ специфические термины и код не переводились.

Смотрите также

( DR* )
обращается к первому символу
(публичная функция-член)
( DR* )
обращается к последнему символу
(публичная функция-член)
возвращает неизменяемую версию строки в виде массива символов стандартного C
(публичная функция-член)
возвращает указатель на первый символ представления
(публичная функция-член std::basic_string_view<CharT,Traits> )