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 起) | |
返回指向作为字符存储工作的底层数组的指针。此指针满足范围
| 
 
  | 
(C++11 前) | 
| 
 
  | 
(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 字符数组版本  (公开成员函数)  |