2

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

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

像这样进入我的 system() :

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

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

我究竟做错了什么?

4

2 回答 2

6

使用std::string,如

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

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

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

于 2012-05-20T15:29:34.733 回答
2

您不能通过分配来创建连接字符串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());
于 2012-05-20T15:30:38.087 回答