2

C++コードからperlスクリプトを実行する必要があります。これはsystem()で行われます。
次に、コードから2番目の引数を渡す必要があります。

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

このように私のsystem()に:

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

ここで、エラーが発生します:「タイプ'constchar[14]'および'char**'の無効なオペランドをバイナリ'operator+'に」

私は何が間違っているのですか?

4

2 に答える 2

6

std::stringのように使用します

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

2つのrawポインタを追加することはできません。

しかし、演算子std::stringの過負荷を提供します。+

于 2012-05-20T15:29:34.733 に答える
2

を割り当てて連結文字列を作成することはできません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());
于 2012-05-20T15:30:38.087 に答える