📜  字符串到 char* - C++ (1)

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

字符串到char* - C++

在C++中,字符串是由字符数组表示的。当我们需要将字符串传递给其他函数或将其保存在其他地方时,我们需要将C++字符串转换为char*类型。

使用c_str()

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分配的内存。

使用copy()

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*的字符串正确结束。