在std::cout [closed]中的三元条件运算符。

问题描述 投票:0回答:4

这是我的代码。

std::cout << "The contaner is " << (!container)?"not":; "empty";

很明显是行不通的,但我希望你现在明白了。我想打印 "The container is empty"并补充说 "not" 之前 "empty" 如果 bool containerfalse.

我想知道这是否可能,或者我是否必须写一些类似的东西。

if(container) std::cout ...;
else std::cout ...; 
c++ cout conditional-operator
4个回答
3
投票

你就快成功了。三元运算符将需要 else 结果,你可以使用一个空字符串 ""那么,由于先例问题,你将需要用括号来封装表达式。

std::cout << "The contaner is " <<  (!container ? "not" : "") << "empty";

5
投票

当所有的事情都失败了,就用if语句。

std::cout << "The contaner is ";
if (!container)
    std::cout << "not ";
std::cout<< "empty";

就我个人而言,我更喜欢这样,而不是使用条件操作符,因为对我来说,它更容易阅读。 当你想显示的东西的类型不同时,这也是可行的。 条件操作符要求将两种情况都转换为一个共同的类型,所以像 !container ? "not" : 1 无法工作。


3
投票

试试... << (!container ? "not" : "") << "empty".


3
投票

你可以在非空的情况下加上空字符串。

std::cout << "The container is " << (!empty ? "not ": "") << "empty";

或者把聪明程度调低一点,我个人觉得这样更易读。

std::cout << "The container is " << (empty ? "empty": "not empty");
© www.soinside.com 2019 - 2024. All rights reserved.