Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个字符串从C++代码传递到C代码会导致错误_C++_String_Struct_Char Pointer - Fatal编程技术网

将多个字符串从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