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

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() const noexcept;
(начиная с C++11)
CharT* data() noexcept;
(2) (начиная с C++17)

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

На непустой строке указатель будет таким, что диапазон [data(); data() + size()) является действительным и значения в нём соответствуют значениям, хранящимся в строке. Завершающего нулевого символа может и не быть. Если строка пуста, указатель не является нулевым, но его нельзя разыменовывать. (до C++11)

Всегда, даже на пустых строках, указатель будет таким, что диапазон [data(); data() + size()] является действительным и его значения соответствуют значениям, хранящимся в строке (включая завершающий нулевой символ). Так что data() и c_str() выполняют одну и ту же функцию. (начиная с C++11)

Содержание

[править] Заметки

Запись в массив, возвращённый константной перегрузкой, вызовет неопределённое поведение.

Перезапись завершающего нулевого символа чем угодно, кроме нулевого символа, вызовет неопределённое поведение.

Указатель, полученный с помощью data(), может стать недействительным после любой неконстантной операции со строкой, кроме operator[](), at(), begin(), end(), rbegin(), rend().

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

(Нет)

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

Указатель на лежащий в основе строки массив, такой, что data()[i] == operator[](i) для каждого i в [0, size()). (до C++11)

Указатель на лежащий в основе строки массив, такой, что data() + i == &operator[](i) для каждого i в [0, size()]. (начиная с C++11)

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

Константная

[править] Исключения

спецификация noexcept:  
noexcept
  

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

(C++11)
обращается к первому символу
(public функция-элемент) [править]
(C++11)
получает доступ к последнему символу
(public функция-элемент) [править]
возвращает немодифицируемую стандартную версию массива символов C строки
(public функция-элемент) [править]