C++ :从C++脚本内部触发存储在我机器上的 python 脚本

C++ : Trigger a python script stored on my machine, from inside a C++ script

本文关键字:C++ 脚本 python 机器 内部 存储      更新时间:2023-10-16

我想从我的C++脚本触发一个python脚本。python脚本是独立的,我不需要从C++传递任何东西,我也不需要向C++返回任何东西。

我还想暂停执行C++脚本,直到 python 脚本完成。

我已经尝试了在线提供的嵌入解决方案和包装解决方案,但我正在寻找更简单的东西。

我尝试了以下方法。

include cstdlib
system("py "C:pathpython_script.py"");

此尝试的双引号语法有问题。 然后,我尝试这样做来处理双引号探测器。

include cstdlib
system("py " + char(34) + "C:pathpython_script.py" + char(34));

然后我收到错误"表达式必须具有整数或无作用域枚举类型"。似乎您不能在C++中以这种方式连接字符串? 在最后一次尝试中,我尝试将字符串连接成碎片。

include cstdlib
string   path1 = "py ";
string   path2 = "C:pathpython_script.py";
string   path = python_path1 + char(34) + python_path2 + char(34);
system(path);

我现在收到错误"不存在从"std::string"到"const char"的合适转换函数"。 任何帮助将不胜感激。

正如其他答案告诉您添加 \ 以转义 " 并双重转义您的 \ 路径分隔符:

system("py "C:\path\python_script.py"");

你可以试试system("py "C:pathpython_script.py"");

这样,您可以转义引号并将其写入字符串。

看看这篇文章

尝试字符串流

#include <sstream>
std::stringstream ss;
ss << "py ";
ss << ""C:pathpython_script.py"";
system(ss.str().c_str());