如何在 C++ 中打印多个不同类型的变量以进行控制台
How to print multiple variables of different type to console in C++
我是 C++ 的初学者,编码几分钟后我就厌倦了手动输入
"std:cout << "打印一些东西" << std:endl;"所以我决定创建一个名为 printL 的函数来简化打印到控制台,经过几个小时和一些优化后,我最终得到了一个模板,我试图创建一个可变参数模板,但我无法弄清楚我的代码有什么问题
template < typename T > void printL(T t){
std::cout << t << std::endl;
}
template < typename T, typename ...F > void printL(T t, F ...f) {
std::cout << t << printL(f...) << std::flush;
}
int main() {
printL("the quick brown fox jumps over the lazy dog ", "dog");
return 0;
它应该输出这个:
the quick brown fox jumps over the lazy dog dog
代码应该接受一些未知的参数,类型也是未知的。它应该将它们打印在一行中并以新行结束打印功能。
您的函数定义为 return void
,因此您的代码将无法运行。
相反,只需打印第一个参数,然后进行递归调用以打印其余参数。
std::cout << t;
printL(f...);
您的终止实施使用 std::endl
,并且已经刷新。
有了 C++17 fold expressions,就更简单了
template <typename... T> void printL(T... t) {
(std::cout << ... << t) << std::endl;
}
我是 C++ 的初学者,编码几分钟后我就厌倦了手动输入 "std:cout << "打印一些东西" << std:endl;"所以我决定创建一个名为 printL 的函数来简化打印到控制台,经过几个小时和一些优化后,我最终得到了一个模板,我试图创建一个可变参数模板,但我无法弄清楚我的代码有什么问题
template < typename T > void printL(T t){
std::cout << t << std::endl;
}
template < typename T, typename ...F > void printL(T t, F ...f) {
std::cout << t << printL(f...) << std::flush;
}
int main() {
printL("the quick brown fox jumps over the lazy dog ", "dog");
return 0;
它应该输出这个:
the quick brown fox jumps over the lazy dog dog
代码应该接受一些未知的参数,类型也是未知的。它应该将它们打印在一行中并以新行结束打印功能。
您的函数定义为 return void
,因此您的代码将无法运行。
相反,只需打印第一个参数,然后进行递归调用以打印其余参数。
std::cout << t;
printL(f...);
您的终止实施使用 std::endl
,并且已经刷新。
有了 C++17 fold expressions,就更简单了
template <typename... T> void printL(T... t) {
(std::cout << ... << t) << std::endl;
}