我正在为我的课堂作业编写一个非常基本的shell程序。目前已经接近完成,但是在使用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`的一些内容,但我不确定这是否是我需要做的。
如果您愿意帮助我让我的字符数组正确地被该函数接受,那么请帮忙。如果需要我发布更多的代码,请告诉我。
谢谢