How to put variable as argument in system()

71 views Asked by At

I am trying to include the sleep 1 command in bash in my .cpp file
While system("sleep 1") works fine, I would like to change 1 into a const int or string

const string t = "1";
string c = "sleep " + t;
system(c);

However, it seems like the system(c) is treated as a call to function as the following error occurs:

error: no matching function for call to 'system'
  system(c);

How can I resolve this?

2

There are 2 answers

0
Adrian Mole On BEST ANSWER

The system function takes a const char* pointer as its argument. However, there is no implicit conversion from a std::string object to a const char* (representing its contained string data) provided by the Standard Library. Instead, you can call the c_str() member function on that object, like so:

system(c.c_str());
0
user2052436 On

system(c.c_str()) or, equivalently (from C++11), system(c.data())