📅  最后修改于: 2023-12-03 15:25:02.872000             🧑  作者: Mango
在C++中,字符串是由字符数组表示的。当我们需要将字符串传递给其他函数或将其保存在其他地方时,我们需要将C++字符串转换为char*类型。
C++字符串类中提供了一个成员函数c_str()
,它返回一个类型为const char*
的指针,其中包含字符串的值以NULL结尾。我们可以将这个指针存储在一个char*变量中,并将其用于所需的操作。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello, World!";
char* cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());
cout << cstr;
delete[] cstr;
return 0;
}
在上面的例子中,我们首先创建一个string对象str
和一个char*变量cstr
,后者用于存储C++字符串类中的字符串。然后我们使用strcpy()
函数将str.c_str()
的值复制到cstr
中。最后,我们打印cstr
并删除使用new
分配的内存。
C++标准库中的copy()
函数也可以将C++字符串转换为char*。我们只需要将C++字符串的首位地址和最后一位地址传递给copy()
函数即可。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str = "Hello, World!";
char* cstr = new char[str.length() + 1];
copy(str.begin(), str.end(), cstr);
cstr[str.length()] = '\0';
cout << cstr;
delete[] cstr;
return 0;
}
在上面的例子中,我们使用copy()
函数将str
的值复制到cstr
中。由于copy()
不会自动在C++字符串后面添加NULL,我们需要自己手动添加。最后,我们打印cstr
并删除使用new
分配的内存。
在C++中,我们可以使用c_str()
和copy()
函数将C++字符串转换为char*。这些函数都提供了方便的方法来执行此操作,并确保char*的字符串正确结束。