使用 c.str 从字符串转换为 cstring

Using c.str to convert from string to cstring

本文关键字:转换 cstring 字符串 str 使用      更新时间:2023-10-16

我正在练习一些关于字符串和字符串的工作。使用 c_str() 从一个字符串转到字符串,我得到一个不兼容的数据类型编译错误。例如,这是给出所述错误的代码:

string str = "StackOverFlow";
char inCstring[20]{};
inCstring = str.c_str();

有什么想法吗?

问题是 str.c_str() 返回一个常量字符*,并且您正在尝试将其传递给字符*。使用 strcpy 获得预期的结果:

#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
    string str = "StackOverFlow";
    char inCstring[20];
    strcpy(inCstring, str.c_str());
    cout << "str: " << str << endl;
    cout << "inCstring: " << inCstring << endl;
    return 0;
}

所以我想出了两种方法来实现这一目标。
首先,重要的是要记住,你不能分配给整个数组,这意味着必须指定要分配给的数组元素。因此,尝试将字符串分配给 char 数组根本不起作用。
话虽如此,通过指定元素,可以在 char 数组的特定元素中分配字符。以下是完成字符串到字符串
(字符串到字符数组)"转换"的两种方法。请参阅文森特的回答以获取完整的代码。我发现方法 B 更好,因为我想在我的字符数组上拥有最大大小。

方法一:

string str = "StackOverFlow";
const char* inCstring;
inCstring = str.c_str();

方法B:

string str = "StackOverFlow";
char inCstring[20]{};

然后使用 strcpy

strcpy(inCstring, str.c_str());