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

时间:2016-01-28 02:32:14

标签: c++ string c-strings

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

问题是str.c_str()返回一个const char *,并且你试图将它传递给char *。使用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;
}

答案 1 :(得分:2)

所以我想出了两种方法来实现这一目标。
首先,重要的是要记住,您不能分配给整个数组,这意味着必须指定要分配的数组元素。由于这个原因,尝试将字符串分配给char数组根本不起作用。
话说,通过指定元素,可以在char数组的特定元素中分配字符。
下面是两个完成字符串到cstring(字符串到字符数组)“转换”的方法。请查看Vincent的答案以获取完整代码。我发现方法B更好,因为我想在我的字符数组上有最大大小。

方法A:

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

方法B:

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

然后使用strcpy

strcpy(inCstring, str.c_str());