我需要从我的c ++代码中执行perl脚本。这是通过system()完成的 现在我需要从我的代码中传递第二个参数:
int main(int argc, char * argv[])
进入我的系统():
char *toCall="perl test.pl "+argv[1];
system(toCall);
现在它带来了错误:“类型'const char [14]'和'char **'的无效操作数到二进制'运算符+'”<
p>
我做错了什么?
答案 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::string
或std::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());