std::basic_string<CharT,Traits,Allocator>:: data
|
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() 。
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>
的公开成员函数)
|