簡體   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