public member function
<string>

std::basic_string::data

const charT* data() const;
const charT* data() const noexcept;
获取字符串数据
返回一个指向数组的指针,该数组包含与构成 basic_string 对象的值的字符相同的字符序列。

访问地址data()+size()会产生未定义的行为:不能保证空字符会终止此函数返回的值所指向的字符序列。有关提供此类保证的函数,请参阅 basic_string::c_str

程序不得更改此序列中的任何字符。
返回一个指向包含以 null 结尾的字符序列(即 C 字符串)的数组的指针,该字符序列表示 basic_string 对象的当前值。

此数组包括构成 basic_string 对象的值的相同字符序列,外加一个附加的终止 null 字符 (charT()) 在末尾。

返回的指针指向 basic_string 对象当前使用的内部数组,以存储符合其值的字符。

两者都basic_string::databasic_string::c_str 是同义词,并返回相同的值。

返回的指针可能会因进一步调用修改对象的其他成员函数而失效。

参数



返回值

指向 basic_string 对象的 C 字符串表示形式的值的指针。

charTbasic_string 的字符类型(即,它的第一个模板参数)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// string::data
#include <iostream>
#include <string>
#include <cstring>

int main ()
{
  int length;

  std::string str = "Test string";
  char* cstr = "Test string";

  if ( str.length() == std::strlen(cstr) )
  {
    std::cout << "str and cstr have the same length.\n";

    if ( memcmp (cstr, str.data(), str.length() ) == 0 )
      std::cout << "str and cstr have the same content.\n";
  }
  return 0;
}

输出
str and cstr have the same length.
str and cstr have the same content.


复杂性、迭代器、访问、异常

未指定或矛盾的规范。

复杂度

常量。

迭代器有效性

没有变化。

数据竞争

该对象被访问。

异常安全

无异常保证:此成员函数从不抛出异常。

另见