繁体   English   中英

在函数调用中包装std :: cout

[英]Wrapping std::cout in a function call

我有很多couts,所以我希望能够创建一个只需要三个参数的函数。 该函数会将它们打印到屏幕上,就像cout这样:

print( 5, " is a ", "number" );

// should do the same thing as

cout << 5 << " is a " << "number" << endl;

我不是要求任何人这样做。 我只是想找到一种方法。 但是,如果你能提供一个好的代码。 有人有建议吗? 谢谢。

template <typename T0, typename T1, typename T2>
void print(T0 const& t0, T1 const& t1, T2 const& t2)
{
    std::cout << t0 << t1 << t2 << std::endl;
}

我希望能够创建一个只需要三个参数的函数

你确定吗? C ++ 11为我们提供了更多的功能。

void print()
{
    std::cout << std::endl;
}

template<typename T, typename... Args>
void print(const T & val, Args&&... args)
{
    std::cout << val;
    print(args...);
}

你可以用模板做到:

template<typename T, typename S, typename U>
print(T x, S y, U z)
{
    std::cout << x << y << z;
}

编辑:如果您希望传递复杂类型(不仅仅是intchar * ),您应该遵循James的回答并使用const引用。

你可以使用宏...(如果你想这样做,有时可能很难看)

#define PRINT(x,y,z) cout << (x) << (y) << (z) << endl;

如果您希望简化打印三个项目的特定任务,可以使用#define宏来完成:

#define print(A,B,C) cout << (A) << (B) << (C) << endl

如果您更喜欢函数调用语法,请考虑使用C风格的输出: printf是C ++标准库的“第一类成员”,当您在特定应用程序中有意义时,没有理由回避它:

printf("%d %s %s\n", 5, "is a", "number");

printf方法的优点是它不限于任何特定数量的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM