basic_string::c_str

const charT* c_str() const;
const charT* c_str() const noexcept;
获取 C 字符串等效项
返回指向一个数组的指针,该数组包含一个以 null 结尾的字符序列(即 C 字符串),表示 basic_string 对象的当前值。

该数组包括构成 basic_string 对象值的相同字符序列,外加一个附加的终止空字符(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
22
23
24
// strings and c-strings
#include <iostream>
#include <cstring>
#include <string>

int main ()
{
  std::string str ("Please split this sentence into tokens");

  char * cstr = new char [str.length()+1];
  std::strcpy (cstr, str.c_str());

  // cstr now contains a c-string copy of str

  char * p = std::strtok (cstr," ");
  while (p!=0)
  {
    std::cout << p << '\n';
    p = strtok(NULL," ");
  }

  delete[] cstr;
  return 0;
}

输出
Please
split
this
sentence
into
tokens


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

未指定或矛盾的规范。

复杂度

常量。

迭代器有效性

没有变化。

数据竞争

该对象被访问。

异常安全

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

另见