C++(c_str())
在 C++ 中,c_str()
是 std::string
类的成员函数,用于返回一个指向以 null 结尾的字符数组(C 风格字符串)的指针。这个函数主要用于将 C++ 标准字符串转换为 C 风格字符串,以便与接受 C 风格字符串参数的函数进行交互。
函数签名:
const char* c_str() const noexcept;
示例:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
// 获取 C 风格字符串指针
const char* cstr = str.c_str();
// 使用 C 风格字符串
std::cout << cstr << std::endl;
return 0;
}
Hello, World!
在上述示例中,c_str()
函数被用于获取 std::string
对象 str
的 C 风格字符串表示。这样的字符串可以被传递给使用 C 风格字符串的函数,如 printf
或文件 I/O 函数。需要注意的是,c_str()
返回的指针指向的字符串是只读的,不应该尝试修改这个字符串。
注意事项:
- 生命周期限制:返回的 C 风格字符串指针的有效性受到原始
std::string
对象的生命周期限制。如果原始字符串对象被销毁,那么指针将不再有效。 - 只读性:返回的 C 风格字符串是只读的,不应该尝试通过这个指针修改字符串的内容。如果需要修改字符串,应该使用
std::string
提供的成员函数。 - 不是总是 null-terminated:
c_str()
返回的指针指向一个以 null 结尾的字符数组,但如果原始字符串中包含 null 字符,则只会返回第一个 null 字符之前的部分。
使用场景:
c_str()
主要在需要将 std::string
对象传递给接受 C 风格字符串参数的函数时使用,或者在需要与使用 C 风格字符串的旧代码进行交互时使用。