gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:46:20 24 4
gpt4 key购买 nike

我想将变量的名称及其值转储到 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/

关于c++ - 漂亮地打印 C++ 中的变量和值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com