std::basic_string::data

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
const CharT* data() const;
(1)
CharT* data();
(2) (C++17 起)

返回指向作为字符存储工作的底层数组的指针。此指针满足范围 [data(); data() + size()) 为合法,且其中的值对应存储于字符串的值。

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

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

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

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

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

  • 传递非 const 引用给任何标准库函数,或
  • 在 string 上调用非 const 成员函数,除了 operator[]()at()front()back()begin()end()rbegin()rend()
1) 通过 data 的 const 重载修改数组有未定义行为。
2) 修改存储于 data()+size() 的尾后空终止符有未定义行为。

目录

[编辑] 参数

(无)

[编辑] 返回值

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

对每个 [0, size()) 中的 idata()[i] == operator[](i) (C++11 前)
对每个 [0, size()] 中的 idata()[i] == operator[](i) (C++11 起)

[编辑] 复杂度

常数。

[编辑] 异常

(无) (C++11 前)
noexcept 规定:  
noexcept
  
(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)
访问的第一个字符
原文:
accesses the first character
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
(C++11)
访问的最后一个字符
原文:
accesses the last character
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
返回一个不可修改的C风格字符串
原文:
returns a non-modifiable standard C character array version of the string
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]