首页 > 解决方案 > 如何在 C++ 中将多个不同类型的变量打印到控制台

问题描述

我是 C++ 的初学者,经过几分钟的编码,我厌倦了手动输入“std:cout << “print something”<< 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

代码应该接受一些未知的参数,并且类型也是未知的。它应该将它们打印在一行中,并以新行结束打印功能。

标签: c++templatesvariadic

解决方案


您的函数被定义为 return void,因此您的代码将不起作用。相反,只需打印第一个参数,然后进行递归调用以打印其余参数。

std::cout << t;
printL(f...);

您的终止实现使用std::endl, 并且已经刷新。


推荐阅读