使用三元运算符在一行中打印不同类型

时间:2014-09-18 09:51:14

标签: c++ visual-c++ stl visual-studio-2013

我想避免使用这样的代码:

int x = ...;
cout << "x=";
if(x)
  cout << x;
else
  cout << "???";
cout<<"!";

我真的想要这样的东西:

cout << "x=" << (x ? x : "???") << "!";

但是这不会编译为x"???"不兼容/不同类型。

有没有办法整齐地做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以将cout放在三元运算符中:

cout << "x="; 
(x ? cout << x : cout << "???") << "!";

如果您的编译器支持C ++ 11,请使用std::to_string()

cout << "x=" << (x ? std::to_string(x) : "???") << "!";

Live demo