如何在c++编译器里写python代码~python转c++
2026/7/31 8:58:42 网站建设 项目流程

如果你是一个想转行c++的python学者(。又或是一个喜欢恶搞的c++学者。),这篇文章可能是自你知道c++开始最令人震惊的东西。


看看这个吧

#include<iostream>#include<fstream>#include<cstdlib>intmain(){std::string py_code=R"(# -*- coding: gbk -*- print("这是Python代码,由C++调用") a = 100 + 200 print("计算结果:",a) )";std::ofstreamtmp("temp.py");tmp<<py_code;tmp.close();intret=std::system("py temp.py");returnret;}

想必无论你是学c++的还是学python的看到这个都有不少感触吧。

没错,你可以在c++编译器里写python代码。

#include<iostream>#include<fstream>#include<cstdlib>intmain(){std::string py_code=R"(# -*- coding: gbk -*- )";std::ofstreamtmp("temp.py");tmp<<py_code;tmp.close();intret=std::system("py temp.py");returnret;}

这是c++框架,然后你只要在

里面写python代码就能直接运行。
这个东西有时候很好用,比如

这道题,很明显,是一道高精度。
众所周知,c++写高精度极为麻烦

#include<iostream>#include<string>#include<cstring>usingnamespacestd;constintMAXN=505;// 最多500位,预留505防止进位多一位inta[MAXN],b[MAXN],ans[MAXN];string s1,s2;intlen1,len2,len_ans;intcarry;// 进位intmain(){// 1. 读取两个大数字字符串cin>>s1>>s2;len1=s1.size();len2=s2.size();// 2. 逆序存入数组:下标0是个位for(inti=0;i<len1;i++){a[i]=s1[len1-1-i]-'0';}for(inti=0;i<len2;i++){b[i]=s2[len2-1-i]-'0';}// 3. 逐位加法,循环到最长数字长度carry=0;len_ans=max(len1,len2);for(inti=0;i<len_ans;i++){intsum=a[i]+b[i]+carry;ans[i]=sum%10;carry=sum/10;}// 4. 处理最高位剩余进位if(carry!=0){ans[len_ans]=carry;len_ans++;}// 5. 逆序输出(从最高位打印到个位)for(inti=len_ans-1;i>=0;i--){cout<<ans[i];}cout<<endl;return0;}

但是python写这道题直接一行搞定

print(int(input())+int(input()))

于是我们可以把这个放进我们的框架里。即

#include<iostream>#include<fstream>#include<cstdlib>intmain(){std::string py_code=R"(# -*- coding: gbk -*- print(int(input()) + int(input())) )";std::ofstreamtmp("temp.py");tmp<<py_code;tmp.close();intret=std::system("py temp.py");returnret;}//哈哈,再也不会被学python的嘲笑啦

这可不是减少了一点点,万能框架一套,要写的其实也只有那一行。


接下来,我来讲一讲原理,这段代码其实是把python存入temp脚本,然后再启动 Python 解释器,运行刚刚生成的temp.py脚本。
所以运行完后,桌面上会多出一个 temp.py 。(可能要手动删除)

若运行发生错误,给出以下修复方案

1. 在程序最顶端加上

#include<string>

2. 若未安装python,见 python https://www.python.org/downloads/windows/ ,选择 3.10/3.11 稳定版,或者在应用商店安装。
3. 若程序依然无法运行,请检查python语法是否正确
4. 若仍运行出错,尝试将代码

intret=std::system("py temp.py");

改为

intret=std::system("python temp.py");

后再次运行。若程序显示

请立即改回

intret=std::system("py temp.py");

6.若还是不行,本人也无能为力了


希望本文能为大家带来启发。本文到这里就结束了。感谢大家的浏览,若有补充,请在评论区指出。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询