std::basic_string<CharT,Traits,Allocator>::c_str

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
成员函数
元素访问
basic_string::c_str
迭代器
容量
修改器
搜索
操作
常量
非成员函数
I/O
比较
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20)
数值转换
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
字面量
辅助类
推导指引 (C++17)

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

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

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

c_str() 获得的指针可能因下列行为失效:

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

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

(C++11 起)

参数

(无)

返回值

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

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

(C++11 前)

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

(C++11 起)

复杂度

常数。

注解

c_str() 获得的指针只能在字符串对象不含其他空字符时被当做指向空终止字符串的指针。

示例

#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>
 
extern "C" void c_func(const char* c_str)
{
    printf("以 '%s' 调用 c_func\n", c_str);
}
 
int main()
{
    std::string const s("Emplary");
    const char* p = s.c_str();
    assert(s.size() == std::strlen(p));
    assert(std::equal(s.begin(), s.end(), p));
    assert(std::equal(p, p + s.size(), s.begin()));
    assert('\0' == *(p + s.size()));
 
    c_func(s.c_str());
}

输出:

以 'Emplary' 调用 c_func

参阅

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