Having a string within a system()

2019-03-07 02:34发布

问题:

How can I use a string within a system(). ex: (input is the string)

system("open -a Google Chrome" "http://www.dictionary.reference.com/browse/" + input + "?s=t");

Because when I do this I get this error (No matching function for call to 'system').

回答1:

system is available in cstdlib header.

Function takes a c-style string as a parameter. + doesn't append string literals.

So try -

std::string cmd("open -a Google Chrome");
cmd += " http://www.dictionary.reference.com/browse/" + input + "?s=t";

// In the above case, operator + overloaded in `std::string` is called and 
// does the necessary concatenation.

system(cmd.c_str());


回答2:

Have you included the stdlib header?

No matching function for call to 'system' typically occurs when it cannot resolve a function with that signature.

EG:

#include <stdlib.h> // Needed for system().

int main()
{
    system("some argument"); 
    return 1;
}

And don't forget to .c_str() your std::string variable when passing it in as an argument.

See:

  1. system() documentation.
  2. This SO answer.