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