std::basic_string<CharT,Traits,Allocator>::data
| (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)
[править] Сложность
Константная
[править] Исключения
[править] См. также
| (C++11) |
обращается к первому символу (public функция-элемент) |
| (C++11) |
получает доступ к последнему символу (public функция-элемент) |
| возвращает немодифицируемую стандартную версию массива символов C строки (public функция-элемент) | |