我有一个vector<string>
我希望推进execl
,以便我的向量的每个成员都以char*
的形式传入。这是可能的,如果可以的话,我该如何实现呢?
答案 0 :(得分:0)
不,这是不可能的,但您可以使用execv
代替。 execl
采用可变长度 l 的参数,而execv
采用 v ector(实际上是C数组)。但是,您必须从std::vector<std::string>
转换为C字符串数组(char **
)。另外execv
需要一个以null结尾的数组,也就是说,数组的最后一个元素需要是一个空指针。但是这样的事情应该有效:
int exec_my_vector(std::string path, std::vector<std::string> v)
{
const char *cv[v.size() + 1];
unsigned i;
for(i = 0; i < v.size(); i++)
cv[i] = v[i].c_str();
cv[i] = NULL;
return execv(path.c_str(), (char * const *)cv);
}
(免责声明:在execv
电话会议结束时有一个不可取的演员表,但这不是必要的,但我无法找到解决方法。)