繁体   English   中英

漂亮地在C ++中打印变量和值的列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM