我有一个结构如下
struct st
{
std::string name;
std ::string refer;
int number;
std::string path;
};
创建了上述结构的数组
struct st var[5]={{"rick1","ross1",1,"demo1"},
{ "rick2","roos2",2,"demo2" },
{ "rick3","roos3",3,"demo3"},
{"rick4","roos4,4,"demo4"},
{"rick5","roos5",5,"demo5"}};
现在我将我的userdefine函数(pass)称为
c ++代码
for(i=0;i<5;i++)
pass(var[i].name.c_str());// how can i pass name sting to char *?
c code
void pass(char *name) // implemented in c code so cannot use string
{
cout<<name<<endl;
}
我应该将调用函数(c ++代码)中的字符串类型的名称传递给调用函数(c代码),这是char *类型。我使用c_str()但它会抛出错误。请帮助我谢谢提前
注意:从c ++代码调用pass函数,该函数将字符串作为参数传递给c代码,该代码捕获为char *
答案 0 :(得分:1)
name.c_str()
返回const char*
。您不能将const指针作为带有非常量指针的函数的参数传递。
如果你有一个非常新的编译器,你可以使用自{C ++ 17标准以来具有非常量重载的std::string::data()。
否则你需要一个const_cast:
pass(const_cast<char*>(var[i].name.c_str()))
我假设传递函数实际上并没有修改字符串。