C++ 参考手册

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

const CharT* c_str() const;
(C++11 前)
const CharT* c_str() const noexcept;
(C++11 起)
(C++20 前)
constexpr const CharT* c_str() const noexcept;
(C++20 起)

返回指向拥有数据等价于存储于字符串中的空终止字符数组的指针。

该指针有范围 [c_str(); c_str() + size()] 为合法,且其中的值对应存储于字符串的值,且在最后位置有个附加的空终止字符。

c_str() 获得的指针可能被下列行为非法化:

通过 c_str() 写入字符数组是未定义行为。

c_str()data() 进行同一功能。

(C++11 起)

参数

(无)

返回值

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

对于每个 [0, size()) 中的 ic_str()[i] == operator[](i)

(C++11 前)

对于每个 [0, size()] 中的 ic_str() + i == std::addressof(operator[](i))

(C++11 起)

复杂度

常数。

注意

c_str() 获得的指针可以只当做一个指向空终止字符串的指针,若 string 对象不含其他空字符。

示例

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
 
int main()
{
  std::string const s("Emplary");
  assert(s.size() == std::strlen(s.c_str()));
  assert(std::equal(s.begin(), s.end(), s.c_str()));
  assert(std::equal(s.c_str(), s.c_str() + s.size(), s.begin()));
  assert(0 == *(s.c_str() + s.size()));
}


参阅

(C++11)
访问首字符
(公开成员函数)
(C++11)
访问最后的字符
(公开成员函数)
返回指向字符串首字符的指针
(公开成员函数)