c_str()和str()有什么区别
时间: 2023-08-29 21:09:19 浏览: 159
在 C++ 中,`c_str()` 和 `str()` 是 `std::string` 类的两个成员函数,用于获取 `std::string` 对象中存储的字符串。
1. `c_str()`: `c_str()` 函数返回一个指向以 null 结尾的 C 风格字符串的指针(`const char*` 类型)。该函数主要用于与 C 语言的函数进行交互,或者需要将 `std::string` 转换为 C 风格字符串的情况。返回的指针指向 `std::string` 对象内部存储的字符数组,并以 null 终止。注意,使用 `c_str()` 函数获取的指针是只读的,不能修改字符串内容。
2. `str()`: `str()` 函数返回一个 `std::string` 对象的副本。该函数将 `std::string` 对象中的字符串内容复制到新的 `std::string` 对象中,并返回这个新的对象。使用 `str()` 函数可以方便地获取 `std::string` 对象的拷贝,对返回的对象进行修改不会影响原始的 `std::string` 对象。
以下是一个示例代码,展示了 `c_str()` 和 `str()` 的用法:
```cpp
#include <iostream>
#include <string>
int main() {
std::string myString = "Hello, World!";
// 使用 c_str() 函数获取 C 风格字符串并打印
const char* cString = myString.c_str();
std::cout << "C-style string: " << cString << std::endl;
// 使用 str() 函数获取 std::string 对象的副本并打印
std::string copyString = myString.str();
std::cout << "Copy of string: " << copyString << std::endl;
return 0;
}
```
在上述示例中,我们创建了一个名为 `myString` 的 `std::string` 对象,并将其初始化为 "Hello, World!"。然后,我们使用 `c_str()` 函数获取到 `myString` 的 C 风格字符串,并将其打印输出。接着,我们使用 `str()` 函数获取 `myString` 的副本,并将副本存储在 `copyString` 变量中,然后将其打印输出。
希望对你有所帮助!如有其他问题,请随时提问。