C++ 如何在C++;?
C++ 如何在C++;?,c++,C++,Python函数exec()是一个非常好的编程工具 例如: /****************************************************** * we have array names={"ali","hamed"} * goal is declare string ali="ali" and hamed="hamed" ******************************************************/ Pythoncode: #
Python
函数exec()
是一个非常好的编程工具
例如:
/******************************************************
* we have array names={"ali","hamed"}
* goal is declare string ali="ali" and hamed="hamed"
******************************************************/
Python
code:
# used for command
# below line is a syntax python
# in python we dont declare variable
list=["ali","hamed"] #python syntax
#in python we dont wite {
#python work with tab insteed of {}
for i in list:
temp = i + ' = "' + i + '"' #temp is a string
exec(temp)
我的问题是:C++中是否存在类似的函数?如果不是,如何在C++中实现它?p> Python的
exec
和其他语言中的类似功能(即JavaScript中的eval
)只起作用,因为它们是解释语言,在运行时定义了变量
你不能直接做C++中的请求,因为它是编译语言,要求所有变量和它们的名称在编译时都知道。
你可以做到,但是这不是微不足道的,它只会在工作中使用。 其中安装了C++编译器的系统。基本上,C++是 编译,所以如果你想执行一些C++的字符串, 您必须编译它:将它写入一个文件(可能使用 其他样板文件(如一些包含),调用编译器 (使用系统
)构建DLL,然后加载DLL
实际上,即使你付出了所有的努力,你也可能
发现它没有你想象的那么有用。因为C++需要静态
几乎所有东西的声明,都很难
编写这样的小片段并使其可用。(你
例如,必须将其包装在函数中,并生成
C++代码不支持所有的变量。
出于软件工程的原因,这类事情;最
使Python等语言对小型应用程序非常灵活的功能,
快速编写程序,在以下情况下会导致严重的维护问题:
用于大型健壮软件。不同的语言是不同的
为不同的目的而设计。这很容易创建
使用Python作为顶级胶水的混合语言系统
(如果您需要您描述的设施),以及
调用C++来完成繁重的工作(在这样的设施下)
允许用户随意触发内核转储)
可选地,可以在C++中实现一种小型语言。对于 保留用户定义的变量,例如,使用
std::map
,
而不是声明变量。(这毕竟是什么
Python不支持。)如果您计划使用字符串作为参数,这不是一个好主意! 您可以简单地使用一个id生成器函数,并为要使用的每个字符串提供一个id,或者如果您使用的是类,则可以将该函数放入构造函数中。
根本不需要那个exec()不,你不能用C++来做,这是一种不同的语言。如果你想自己写这个函数,那就和编写C++编译器和链接器一样。这不是一项容易的任务。@john ok不存在任何其他帮助我的功能吗?或者我如何在不使用execk的情况下编写这段代码,这取决于您想做什么。不是说C++可以这样做,或者C++可以这样做,描述你想解决的问题。它将在C++中被解决。我对你的Python代码感到困惑。
list
的元素已经是字符串了,为什么要用str(i)
转换它们呢?这应该完成什么?在我的Python解释器中运行它并不能说明任何事情。@drewmm因为我们希望ali=“ali”\uuuuu将exec()删除并运行它\uuuuuuuu我的Python是2。7@unkulunkulu是的。患重感冒,服用伪麻黄碱,打字不直:(AlnAk)这个代码是python语法而不是C++——我解释了Python是如何在代码中工作的,请读它,它已经在Python中工作了,因为它是一种解释语言,而std::map
解决方案。@MM-BB但请解释一下您使用它的目的。(根据我的经验,它通常也不是Python中最好的解决方案。我使用过很多Python,但我从未以这种方式使用过exec
)