使用operator <<?根据某些条件打印不同类型的不同值

mta*_*med 4 c++

假设我想打印数字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)

但这是不可能的,因为来自三元的类型是不同的.

想法?

Cha*_*Lee 5

简单的方法.处理一个字符串.

std::cout << "number of args: "
          << (argc > 1 ? std::to_string(argc - 1) : "none")
          << std::endl;
Run Code Online (Sandbox Code Playgroud)

更改字符串有一些多余的成本.但如果使用一次,它很容易阅读和维护.并且需要括号的原因是移位运算符(<<)具有比三元条件运算符(?:)或关系运算符(>)更高的优先级.