std::basic_string::c_str
来自cppreference.com
< cpp | string | 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()) 中的 i 有 data()[i] == operator[](i) 。 |
(C++11 前) |
对于每个 [0, size()] 中的 i 有 data()[i] == operator[](i) 。 |
(C++11 起) |
[编辑] 复杂度
常数。
[编辑] 异常
(无规定) | (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) |
访问的第一个字符 (公开成员函数) |
(C++11) |
访问的最后一个字符 (公开成员函数) |
返回一个指针,指向一个字符串的第一个字符 原文: returns a pointer to the first character of a string (公开成员函数) |