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