我在VS2019中的代码无法工作.在代码的最后一行编译器抛出了一个错误。
#include <iostream>
#include <string>
using namespace std;
struct struct1
{
string name;
};
void main()
{
struct1* obj1 = new struct1();
obj1->name = "Hello";
// compiler says 'initializing': cannot convert from 'const _Elem *' to 'char [25]'
char str[25] = (obj1->name).c_str();
}
c_str()
返回一个指向 开始 的字符数据。你需要将字符复制到你的数组中,使用类似于 strncpy()
.
有很多方法可以做到这一点,但首先你应该改变char数组的初始化方式,因为你做错了。
这是同样的程序,但工作方式是
#include <iostream>
using namespace std;
struct struct1
{
string name;
};
int main()
{
struct1* obj1 = new struct1();
obj1->name = "Hello";
char str[25] = "";
memcpy(&str,obj1->name.c_str(),obj1->name.size());
cout << str << endl;
}