Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
basic_string::data
Итераторы
Ёмкость
Операции
Поиск
Константы
Правила вывода(C++17)
Функции, не являющиеся элементами
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
(1)
const CharT* data()const;
(до C++11)
const CharT* data()constnoexcept;
(начиная с C++11)
(до C++20)
constexprconst CharT* data()constnoexcept;
(начиная с C++20)
(2)
CharT* data()noexcept;
(начиная с C++17)
(до C++20)
constexpr CharT* data()noexcept;
(начиная с C++20)

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

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

(до C++11)

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

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

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

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

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

(до C++11)

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

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

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

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

  • Передаче неконстантной ссылки на строку в любую функцию стандартной библиотеки или
  • Вызове неконстантных функций-элементов для строки, за исключением operator[](), at(), front(), back(), begin(), end(), rbegin(), rend().
1) Изменение массива символов, доступ к которому осуществляется через константную перегрузку data, имеет неопределённое поведение.
2) Изменение нулевого терминатора за концом строки, хранящегося в data() + size(), на любое значение, кроме CharT(), имеет неопределённое поведение.

Содержание

[править]Параметры

(нет)

[править]Возвращаемое значение

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

data()[i]== operator[](i) для каждого i в [0size()).

(до C++11)

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

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

[править]Сложность

Константная.

[править]Пример

#include <algorithm>#include <cassert>#include <cstring>#include <string>   int main(){std::stringconst 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()));}

[править]Смотрите также

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