跳到主要内容

std::string c_str() 方法

// Const version only
constexpr const CharT* c_str() const noexcept;

返回一个指向以空字符结尾的字符数组的指针,其中包含与字符串中存储的数据等效的数据。

该指针使得范围 [ c_str(); c_str() + size() ] 有效,并且其中的值与字符串中存储的值以及最后一个位置后的额外空字符对应。

失效

通过 c_str() 获取的指针可能会因以下原因失效:

未定义行为

写入通过 c_str 访问的字符数组是未定义行为

.

参数

(无)

返回值

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

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

复杂度

常数 - O(1)

备注

只有当字符串对象不包含其他空字符时,从 c_str() 获取的指针才可被视为指向以空字符结尾的字符串的指针。

c_str()data() 执行相同的功能。 (自 C++11 起)

示例

Main.cpp
#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>

extern "C" {
void c_func(const char* c_str) { printf("c_func called with '%s'\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());
}
}
输出
c_func called with 'Emplary'
本文源自 此 CppReference 页面。它可能为了改进或编辑者偏好而进行了修改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。

std::string c_str() 方法

// Const version only
constexpr const CharT* c_str() const noexcept;

返回一个指向以空字符结尾的字符数组的指针,其中包含与字符串中存储的数据等效的数据。

该指针使得范围 [ c_str(); c_str() + size() ] 有效,并且其中的值与字符串中存储的值以及最后一个位置后的额外空字符对应。

失效

通过 c_str() 获取的指针可能会因以下原因失效:

未定义行为

写入通过 c_str 访问的字符数组是未定义行为

.

参数

(无)

返回值

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

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

复杂度

常数 - O(1)

备注

只有当字符串对象不包含其他空字符时,从 c_str() 获取的指针才可被视为指向以空字符结尾的字符串的指针。

c_str()data() 执行相同的功能。 (自 C++11 起)

示例

Main.cpp
#include <algorithm>
#include <cassert>
#include <cstring>
#include <string>

extern "C" {
void c_func(const char* c_str) { printf("c_func called with '%s'\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());
}
}
输出
c_func called with 'Emplary'
本文源自 此 CppReference 页面。它可能为了改进或编辑者偏好而进行了修改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。