Как запустить другую программу из программы на C ++ - PullRequest
0 голосов
/ 02 августа 2011

Я пытаюсь вызвать другую программу для выполнения функции (я понятия не имею, что, только то, что она написана не на C ++, а в оболочке) для файла в моей программе C ++.Я не знаю, как на самом деле выполнять функцию в моей программе.Я знаю, что пишу что-то вроде этого

system(PROGRAM HERE);

Проблема в том, что я не знаю точно, как я должен печатать программу.Я считаю, что если бы функция вызывалась как dostuff, я бы набрал

system("dostuff");

... Я думаю.Но что, если к этой функции присоединены аргументы, которые я бы дал в качестве переменных в моей программе на C ++?Это то, что мне действительно нужно помочь.В терминале я набрал бы "dostuff -1 arg". Поэтому в C ++ я бы набрал

int arg = 5;

system("dostuff" arg); 

Ответы [ 2 ]

5 голосов
/ 02 августа 2011

Вы можете сначала отформатировать строку. С <sstream> в комплекте:

int arg = 5;
std::stringstream ss;
ss << "dostuff " << arg;
system(ss.str().c_str());

В качестве альтернативы, вы можете использовать функцию конкатенации std::string. Если вы предпочитаете форматтеры в стиле C, вы можете использовать snprintf для аналогичного эффекта.

0 голосов
/ 02 августа 2011

Простой ответ:

system("dostuff -1 5");

По сути, вам необходимо создать аргумент терминала и передать его системному вызову.

Пример:

int arg = 5;
std::stringstream command;

command << "dostuff -1 " << arg;

system(command.str());
...