Я работаю над программой, которая оборачивает программу на C ++, которая мутирует нуклеотидную последовательность с помощью Python. Я гораздо лучше знаком с Python, чем с C ++, и мне проще разбирать файлы данных, используя Python.
Как мне взять строку, которую я проанализировал в Python, и использовать ее в качестве входных данных для программы на C ++? Программа C ++ сама по себе уже принимает вводимые пользователем строки.
Вы можете запустить свой скрипт на Python как отдельный процесс и получить его полный вывод. В QT вы можете сделать это следующим образом:
QString pythonAddress = "C:\\Python32\\python.exe";
QStringList params;
params << "C:\\your_script.py" << "parameter2" << "parameter3" << "parameter4";
p.start(pythonAddress, params);
p.waitForFinished(INFINITE);
QString p_stdout = p.readAll().trimmed(); // Here is the process output.
Если вы не знакомы с QT, используйте методы управления процессами для конкретной платформы или повышение. Проверь это:
Как выполнить команду и получить вывод команды в C ++?
Если вы имеете в виду вызов программы из Python и выполнение чего-либо с ее выводом, то вы хотите subprocess
модуль.
Если вы хотите представить свою функцию C ++ непосредственно Python, то я бы предложил проверить Boost.Python.
Вы хотите взять выходные данные программы на Python и использовать ее в качестве входных данных для программы на C ++?
Вы можете просто использовать оболочку для этого:
python ./program.py | ./c_program
Вы хотите выполнить программу на Python из C ++ и получить вывод обратно в виде строки?
Возможно, есть лучшие способы сделать это, но вот быстрое решение:
//runs in the shell and gives you back the results (stdout and stderr)
std::string execute(std::string const& cmd){
return exec(cmd.c_str());
}
std::string execute(const char* cmd) {
FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
if (result.size() > 0){
result.resize(result.size()-1);
}
return result;
}
std::string results_of_python_program = execute("python program.py");