我想寫這種類型的函數:如何編寫接受未知類型和參數個數的C++函數?
void Print(void* args ...)
{
while(args)
cout<<args[i];
}
的funcdtion應該處理int和(的std :: string或字符*)
這可能嗎?
我想寫這種類型的函數:如何編寫接受未知類型和參數個數的C++函數?
void Print(void* args ...)
{
while(args)
cout<<args[i];
}
的funcdtion應該處理int和(的std :: string或字符*)
這可能嗎?
你可以用可變參數模板做到這一點:
void Print() { }
template <typename T, typename ...Args>
void Print(T const & t, Args const &... args)
{
cout << t;
Print(args...);
}
'std :: initializer_list'呢? –
@NeelBasu:那該怎麼辦?想想'Print(5,「Hello」);'...... –
@NeelBasu:單一類型,限制你如何調用它。 –
接聽
concatenation variable type/number of arguments to one string
無需編寫你自己的功能,只需使用一個std::stringstream
:
std::stringstream ss;
ss << intVar << stringVar << whatever;
我很好奇爲什麼這個答案被低估了 –
應該是'stringstream'與「m」 – 0x499602D2
你想達到什麼目的? –
將變量類型/參數個數連接到一個字符串 – itamar
我不確定'std :: initializer_list'是否可以工作。我使用了C++ 11的功能。但你可以試試 –