我正在用cstring和string练习一些工作。
使用c_str()
从字符串转到cstring我得到一个不兼容的数据类型编译错误。
例如,这是给出错误的代码:
string str = "StackOverFlow";
char inCstring[20]{};
inCstring = str.c_str();
有什么想法吗?
答案 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());