📜  C++ STL中的basic_string c_str函数(1)

📅  最后修改于: 2023-12-03 15:13:56.181000             🧑  作者: Mango

C++ STL中的basic_string c_str函数

在C++ STL(标准模板库)中,basic_string是一个字符串类模板,它提供了一些很有用的成员函数用于操作字符串。其中一个函数是c_str函数。

c_str函数的定义

c_str函数的定义如下:

const char* c_str() const noexcept;

该函数返回一个指向字符串的首字符的指针(const char*),并在字符串末尾自动添加一个空字符'\0',以表示字符串的结尾。

由于返回值是指向常量的指针(const char*),所以不建议在函数外部修改返回的指针所指向的字符串。

c_str函数的使用示例

下面是一个使用c_str函数的示例程序:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    const char* cstr = str.c_str();
    std::cout << "c_str() returns: " << cstr << std::endl;
    return 0;
}

程序输出:

c_str() returns: Hello, world!

该程序首先定义了一个std::string类型的对象str,并将其赋值为"Hello, world!"。接着,使用c_str函数将该字符串转换成了const char*类型的指针cstr,并通过std::cout输出了该指针所指向的字符串。

由于c_str函数自动在字符串末尾添加了空字符'\0',所以输出的字符串与原来的字符串是完全一致的。

总结

c_str函数是C++ STL中的basic_string类模板提供的一个很有用的成员函数,它可以将basic_string类型的字符串转换为C风格的字符串(以'\0'结尾的char类型数组),并返回一个指向该数组的指针。在实际开发中,我们可以使用该函数将basic_string类型的字符串传递给需要C风格字符串参数的函数。