【问题标题】:How can I pass variables from Python back to C++?如何将变量从 Python 传递回 C++?
【发布时间】:2021-11-10 20:54:36
【问题描述】:

我有 2 个文件 - 一个 .cpp 文件和一个 .py 文件。我使用system("python something.py"); 运行.py 文件,它必须得到一些输入。如何将输入传递回 .cpp 文件?我不使用Python.h 库,我有两个单独的文件。

【问题讨论】:

  • c++ 源文件不会被一些类似的程序(如 python)解释。 cpp 文件必须先编译/链接,然后才能执行编译的结果。具体步骤取决于您的操作系统和 cpp 编译器,以及它的安装方式。
  • 您的实际问题/目标是什么?
  • 如果数据不多,把命令行参数传给python?如果有更多数据将其写入文件并让 python 代码拾取它

标签: python c++ parameter-passing


【解决方案1】:

system()是个很钝的锤子,对父子进程交互的方式支持不多。

如果您想将 Python 脚本中的信息传递回 C++ 父进程,我建议让 Python 脚本 print() 输出您想要发送回 C++ 的信息,并让 C++ 程序解析python 脚本的标准输出。 system() 不会让你这样做,但你可以使用 popen() 代替,如下所示:

#include <stdio.h>

int main(int, char **)
{
   FILE * fpIn = popen("python something.py", "r");
   if (fpIn)
   {
      char buf[1024];
      while(fgets(buf, sizeof(buf), fpIn))
      {
         printf("The python script printed:  [%s]\n", buf);
     
         // Code to parse out values from the text in (buf) could go here
      }
      pclose(fpIn);  // note:  be sure to call pclose(), *not* fclose()
   }
   else printf("Couldn't run python script!\n");

   return 0;
}

如果你想得到更详细的信息,你可能需要embed a Python interpreter into your C++ program,然后你就可以直接调用 Python 函数并将它们的返回值作为 Python 对象取回,但这是一个相当重要的我猜你想避免的事情。

【讨论】:

  • 非常感谢!正是我正在寻找的!
  • 由于某种原因我无法使用 ..也许我解压了错误的文件夹或者额外的文件夹(路径不断变化,我不得不更改 >中的文件夹名称>通过删除我提取的文件夹。也许我没有提取整个文件夹,所以每个include&lt;&lt;I had to remove this/something.cpp&gt;&gt;中的路径都改变了。我尝试提取整个文件夹但仍然没有'不起作用。我做错了什么吗?我没有安装和使用 C++ 中的任何库,所以我不知道我是否正确。
猜你喜欢
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2015-02-03
  • 1970-01-01
  • 2011-04-02
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多