我想避免使用这样的代码:
int x = ...;
cout << "x=";
if(x)
cout << x;
else
cout << "???";
cout<<"!";
我真的想要这样的东西:
cout << "x=" << (x ? x : "???") << "!";
但是这不会编译为x
和"???"
不兼容/不同类型。
有没有办法整齐地做到这一点?
答案 0 :(得分:3)
您可以将cout
放在三元运算符中:
cout << "x=";
(x ? cout << x : cout << "???") << "!";
如果您的编译器支持C ++ 11,请使用std::to_string()
:
cout << "x=" << (x ? std::to_string(x) : "???") << "!";