在system()中使用参数char argv []

时间:2012-05-20 15:26:35

标签: c++ arguments command-line-arguments

我需要从我的c ++代码中执行perl脚本。这是通过system()完成的 现在我需要从我的代码中传递第二个参数:

int main(int argc, char * argv[])

进入我的系统():

char *toCall="perl test.pl "+argv[1];
system(toCall);

现在它带来了错误:“类型'const char [14]'和'char **'的无效操作数到二进制'运算符+'”<
p>

我做错了什么?

2 个答案:

答案 0 :(得分:6)

使用std::string,例如

std::string const command = std::string( "perl test.pl " ) + argv[1];
system( command.c_str() );

你不能添加两个原始指针。

但是std::string提供了+运算符的重载。

答案 1 :(得分:1)

您无法通过分配char*来创建连续字符串。您需要使用std::stringstd::ostringstream

std::ostringstream s;

s << "perl test.pl";
for (int i = 1; i < argc; i++)
{
    // Space to separate arguments.
    // You need to quote the arguments if
    // they can contain spaces.
    s << " " << argv[i];
}

system(s.str().c_str());