假设我想打印数字args如果它们> 1或"无",如果它们<= 1.我知道如何做的唯一方法是:
cout << "number of args: ";
if (argc > 1)
cout << argc - 1;
else
cout << "none";
cout << endl;
Run Code Online (Sandbox Code Playgroud)
但后来我无法将<<运营商联系起来.理想情况下,我希望能够做到这样的事情:
cout << "number of args: "
<< argc > 1 ? argc - 1 : "none"
<< endl;
Run Code Online (Sandbox Code Playgroud)
但这是不可能的,因为来自三元的类型是不同的.
想法?
简单的方法.处理一个字符串.
std::cout << "number of args: "
<< (argc > 1 ? std::to_string(argc - 1) : "none")
<< std::endl;
Run Code Online (Sandbox Code Playgroud)
更改字符串有一些多余的成本.但如果使用一次,它很容易阅读和维护.并且需要括号的原因是移位运算符(<<)具有比三元条件运算符(?:)或关系运算符(>)更高的优先级.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |