将多个字符串从C++代码传递到C代码会导致错误
我有一个结构如下将多个字符串从C++代码传递到C代码会导致错误,c++,string,struct,char-pointer,C++,String,Struct,Char Pointer,我有一个结构如下 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" }, {
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 as
c++代码
for(i=0;i<5;i++)
pass(var[i].name.c_str());// how can i pass name sting to char *?
c代码
void pass(char *name) // implemented in c code so cannot use string
{
cout<<name<<endl;
}
我应该将调用functionc++代码时的字符串类型的名称传递给调用的char*类型的functionc代码。我正在使用c_str,但它抛出了一个错误。请提前帮助我,谢谢
注意:从C++代码中调用PASS函数,将字符串作为参数传递给C代码,该代码作为char */p>命中。CySTR返回conchchar *。不能将常量指针作为接受非常量指针的函数的参数传递
如果您有一个最新的编译器,那么您可以使用自C++17标准以来具有非常量重载的编译器 否则,您将需要const_cast:pass(const_cast<char*>(var[i].name.c_str()))
这里我假设pass函数实际上并没有修改字符串。请阅读。注意它返回的类型。如果是用户定义的函数,请正确定义它,即使用std::string¶meter。请注意,在*new*c++11中,您有std::string::data。@Biffen OP将使用char const*,这样就不会有问题了。我只是对这不是有效的选择感到困惑,因为char*在我的情况下会不断变化。OP想修改它吗?@LogicStuff感谢您的回复。我不能改变函数定义,因为它是C代码,C++调用M