在非const char []

时间:2015-11-12 01:54:41

标签: c++ execl

我在vector<string>中从键盘获取了命令,我想在execl()中使用,但execl()需要const char *。是否有其他类似于execl的函数我可以使用char*参数,或者我如何使用execl调用char*

void Process::exec(string & program, vector<string> & params){
int i;
char x=program[0];
if(x=='/'){
    char * argq[params.size()];
        for(i=0;i<params.size();i++){
            argq[i]=(string_to_c_convert(params[i]));
        }

    if(params.size()==2){
        execl(argq[0],argq[0],(char *)0);
    }
    if(params.size()==3){
        execl(argq[0],argq[1],argq[2],(char *)0);
    }
}

2 个答案:

答案 0 :(得分:2)

const char *并不意味着参数必须const,这意味着可以const. < / p>

这里没有问题需要解决。

答案 1 :(得分:0)

您可以从char[]中制作std::string,然后使用std::string::data()返回const char*

char * argq[params.size()];
    for(i=0;i<params.size();i++){
        argq[i]=(string_to_c_convert(params[i]));
    }

const std::string args(argq);
execl(args.data()[0], args.data()[1], 0);

看到你已经有std::vector<std::string>,我假设每个std::string实际上只是一个字符(基于你的循环和string_to_c_convert函数),你可以跳过{{ 1}}完成并执行以下操作:

char[]