std::basic_string<CharT,Traits,Allocator>::data
来自cppreference.com
< cpp | string | basic string
| (1) | ||
| const CharT* data() const; |
(C++11 前) | |
| const CharT* data() const noexcept; |
(C++11 起) (C++20 前) |
|
| constexpr const CharT* data() const noexcept; |
(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 前) |
|
返回的数组是空终止的,即 若 empty() 返回 true ,则指针指向单个空字符。 |
(C++11 起) |
指向 data() 的指针可能因以下情况非法:
- 传递非 const 引用给任何标准库函数,或
- 在 string 上调用非 const 成员函数,除了
operator[]()、 at() 、 front() 、 back() 、 begin() 、 end() 、 rbegin() 、 rend() 。
1) 通过
data 的 const 重载修改数组有未定义行为。2) 修改存储于
data() + size() 的尾后空终止符为任何异于 CharT() 的值有未定义行为。参数
(无)
返回值
指向底层字符存储的指针。
|
对 |
(C++11 前) |
|
对 |
(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())); }
参阅
| (C++11) |
访问首字符 (公开成员函数) |
| (C++11) |
访问最后的字符 (公开成员函数) |
| 返回字符串的不可修改的 C 字符数组版本 (公开成员函数) |