1

我从键盘中获取命令 avector<string>并且我想使用 in execl(),但是 execl() 需要 a 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);
    }
}
4

2 回答 2

2

const char *并不意味着论证必须const,而是意味着它可以const.

这里没有问题需要解决。

于 2015-11-12T03:16:39.897 回答
0

您可以使用std::string您的 a char[],然后使用std::string::data()which 返回 a 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函数),你可以完全跳过char[]并执行以下操作:

execl(params[0].c_str(), params[1].c_str(), 0);
于 2015-11-12T02:06:40.487 回答