我正在做一个学校作业,我必须调用execvp,其方法签名如下
execvp(const char* file, char* const argv[])
Run Code Online (Sandbox Code Playgroud)
但是我的数据是这样的:
std::vector<std::string*>
Run Code Online (Sandbox Code Playgroud)
我一直在尝试将所述向量转换为 的第二种格式的正确格式execvp(),但不可避免地会出现以下错误:
command.cc:120:29: error: invalid conversion from ‘const char**’ to ‘char* const*’ [-fpermissive]
execvp(args[0], argv);
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的变体,但它们都会导致此错误。这个错误让我很困惑,因为我不知道const*. 你怎么能有const*?我会考虑将 更改std::vector为其他类型,但这是一项任务,我实际上不允许更改它。下面是我用来尝试char*[]从向量创建一个的代码:
const size_t numArgs = _simpleCommands[i]->_arguments.size();
std::vector<const char*> args;
for(size_t j = 0; j < numArgs; ++j)
{
args.push_back(strPtrToCharPtr(_simpleCommands[i]->_arguments[i]));
}
const char** argv = new const char*[numArgs];
for(size_t j = 0; j < numArgs; ++j)
{
argv[j] = args[j];
}
execvp(args[0], argv);
Run Code Online (Sandbox Code Playgroud)