std::basic_string<CharT,Traits,Allocator>::data
来自 cppreference.cn
< cpp | string | basic string
const CharT* data() const; |
(1) | (noexcept since C++11) (constexpr since C++20) |
CharT* data() noexcept; |
(2) | (since C++17) (constexpr since C++20) |
返回指向作为字符存储的底层数组的指针。该指针使得范围
|
(直到 C++11) |
|
(自 C++11 起) |
有效,并且其中的值对应于存储在字符串中的值。
返回的数组不要求以空字符结尾。 如果 empty() 返回 true,则该指针是非空指针,不应被解引用。 |
(直到 C++11) |
返回的数组以空字符结尾,即 如果 empty() 返回 true,则该指针指向单个空字符。 |
(自 C++11 起) |
从 data()
获取的指针可能因以下情况而失效:
- 将字符串的非常量引用传递给任何标准库函数,或者
- 在字符串上调用非常量成员函数,排除
operator[]()
, at(), front(), back(), begin(), end(), rbegin(), rend()。
1) 修改通过
data
的常量重载访问的字符数组具有未定义的行为。目录 |
[编辑] 参数
(无)
[编辑] 返回值
指向底层字符存储的指针。
data()[i] == operator[](i) 对于 |
(直到 C++11) |
data() + i == std::addressof(operator[](i)) 对于 |
(自 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())); }
[编辑] 参见
(DR*) |
访问首字符 (公共成员函数) |
(DR*) |
访问尾字符 (公共成员函数) |
返回字符串的非模可修改标准 C 字符数组版本 (公共成员函数) | |
返回指向视图的首字符的指针 ( std::basic_string_view<CharT,Traits> 的公共成员函数) |