问题描述
|
是否有任何独立于平台的方式将程序创建的变量转储到屏幕上?说我写程序
#include <iostream>
void f(){
std::string interal_data = \"hello world\";
}
int main(){
f();
}
有没有办法在不将std::cout/std::stream
加到ѭ3 adding的情况下取出ѭ1?我想从我的程序中输出所有数据,这是非常大的,我不想走到每隔一行并放置一个std::cout
。调试器如何做?
我正在寻找在C ++中做到这一点的方法
解决方法
嗯... \“不加
std::cout
/std::stream
\”是胡说八道,如果您想输出某些内容,那就去做吧。调试器可以神奇地工作,即检查您的进程和东西,并为您的进程提供调试符号,而您没有这些符号。
编辑:当然,这可能仅对C ++正确,因为Python是某种解释型语言,因此您可以从中使用它。由于我对Python毫无经验,因此我无法对此发表评论。 :)
, 问题是关于python和c ++的,但仅更改为c ++?
在Python中,您可以在globals()
或locals()
上打印所有内容,如果对象是没有数据表示形式的类的实例,则只需在其中打印__dict__
属性即可。即递归打印所有内容。
伪代码:
def show(obj):
if isinstance(obj,(int,float,...default types...)):
print obj
if isinstance(obj,dict):
for i,j in obj.items()
print i,show(j)
else:
show(obj.__dict__)
然后你做:
show(globals()) #or show(locals())
您可能要过滤更多的情况,但这是基本算法。