gpt4 book ai didi

C++ const char* 到 const char* const

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:29 27 4
gpt4 key购买 nike

我目前正在为我的类(class)写一个作业,它应该充当一个非常基本的外壳。我快完成了,但是我遇到了 execvp 和我的参数字符数组的问题。这是我的代码的一小段。

//Split the left content args
istringstream iss(left);
while(getline(iss, s, ' ')){
v.push_back(s);
}

//Get the split string and put it into array
const char* cmd_left[v.size()+1];
for(unsigned int i = 0; i < v.size(); i++){
cmd_left[i] = v.at(i).c_str();
}
cmd_left[v.size()] = 0;
v.clear();

这被...利用了

execvp(cmd_left[0], cmd_left);

我的错误是

assign3.cxx:96:34: error: invalid conversion from ‘const char**’ to ‘char* const*’ [-fpermissive]

我知道问题是我的字符数组没有充满常量数据,所以我基本上需要从 const char*const char* const .我阅读了一些关于 const_cast 的内容,但我不确定这是否是我需要做的。

如果您愿意的话,您能帮我让我的字符数组被该函数正确接受吗?如果您需要我发布更多代码,请告诉我。

谢谢

最佳答案

问题是您不能将 const 变量传递给需要非常量参数的函数。

换句话说,const char *char * 的子集。

删除 const

/*const*/ char* cmd_left[v.size()+1];

在此处添加const_cast

cmd_left[i] = const_cast<char *>( v.at(i).c_str() );

您代码的其他部分看起来很可疑,但这将使它通过编译

关于C++ const char* 到 const char* const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com