std::basic_string::c_str

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
const CharT* c_str() const;

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

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

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

  • 传递给任何非标准库函数字符串的非 const 引用,或
  • 在字符串上调用非 const 成员函数,包括 operator[]at()front()back()begin()rbegin()end()rend()

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

c_str()data() 进行同一函数。 (C++11 起)

目录

[编辑] 参数

(无)

[编辑] 返回值

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

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

[编辑] 复杂度

常数。

[编辑] 异常

(无规定) (C++11 前)
noexcept规定:  
noexcept
  (C++11 起)
(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)
访问的第一个字符
原文:
accesses the first character
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公开成员函数) [edit]
(C++11)
访问的最后一个字符
原文:
accesses the last character
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公开成员函数) [edit]
返回一个指针,指向一个字符串的第一个字符
原文:
returns a pointer to the first character of a string
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公开成员函数) [edit]