C++ 参考手册

位置:首页 > C++ 参考手册 >字符串库 >std::basic_string > std::basic_string<CharT,Traits,Allocator>::data

(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()) 为合法,且其中的值对应存储于字符串的值。

不要求返回的数组是空终止的。

empty() 返回 true ,则指针指向不应解引用的非空指针。

(C++11 前)

返回的数组是空终止的,即 data()c_str() 进行同一功能。

empty() 返回 true ,则指针指向单个空字符。

(C++11 起)

指向 data() 的指针可能因以下情况非法:

1) 通过 data 的 const 重载修改数组有未定义行为。
2) 修改存储于 data() + size() 的尾后空终止符为任何异于 CharT() 的值有未定义行为。

参数

(无)

返回值

指向底层字符存储的指针。

[0, size()) 中每个 idata()[i] == operator[](i)

(C++11 前)

[0, size()] 中每个 idata() + 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()));
}


参阅

(C++11)
访问首字符
(公开成员函数)
(C++11)
访问最后的字符
(公开成员函数)
返回字符串的不可修改的 C 字符数组版本
(公开成员函数)