【发布时间】:2014-09-18 09:51:14
【问题描述】:
我想避免这样的代码:
int x = ...;
cout << "x=";
if(x)
cout << x;
else
cout << "???";
cout<<"!";
我真的想要这样的东西:
cout << "x=" << (x ? x : "???") << "!";
但这不能编译,因为 x 和 "???" 是不兼容/不同的类型。
有没有办法巧妙地做到这一点?
【问题讨论】:
-
是
cout << "x=" << (x ? to_string(x) : "???") << "!";吗? -
to_string()是什么,我没听说过? -
啊,一个新的 C++11 特性。这可能就是我所需要的:)
-
三元运算符的第二个和第三个操作数必须有一个可以转换为另一个的类型,这是没有办法的
标签: c++ visual-c++ stl visual-studio-2013