我有很多 couts,所以我希望能够制作一个只需要三个参数的函数。该函数会将它们打印到屏幕上,就像 cout 一样:
print( 5, " is a ", "number" );
// should do the same thing as
cout << 5 << " is a " << "number" << endl;
我不要求任何人这样做。我只是在寻找一种能够做到的方法。但如果你能提供代码也很好。有人有建议吗?谢谢。
我有很多 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;
}
编辑:如果您希望传递复杂类型(不仅仅是int
or char *
),您应该遵循 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
是它不限于任何特定数量的参数。