[英]pretty print a list of variables and values in c++
我想将变量的名称及其值转储到stderr。 以下代码片段一次完成一个变量的任务:
int x=4; int y=2;
#define DUMP_VALUE(x) fprintf( stderr, "%s\n" \
( #x "=" + std::to_string(x) ).c_str() )
DUMP_VALUE(x);
DUMP_VALUE(y);
输出:
x=4
y=2
到现在为止还挺好。 但是...我们如何将这个想法扩展到变量列表? 例如,此代码片段:
int x=4; int y=2; int z=19;
DUMP_VALUES(x,y,z);
会产生以下期望的输出:
x=4, y=2, z=19
问题是...宏和c ++ 11可变参数模板的什么组合可以解决问题?
您可以使用以下内容定义可变参数模板:
template <class T>
void dump(T t)
{
std::cout << "val=", << t << " ";
}
template <class T, class... Args>
void dump(T t, Args... args)
{
dump(t);
dump(args);
}
并这样称呼它:
int x = 1;
int y = 2;
int z = 3;
dump(x, y, z);
输出:
val=1, val=2, val=3
如果要打印出来,则必须在调用dump时以某种方式传入变量的名称。
这是一个不错的参考网站,上面有一些可变的示例: http : //eli.thegreenplace.net/2014/variadic-templates-in-c/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.