cout中的C++if-else语句
C++ if-else statement inside cout
我想做这样的事情:
ostream& table(ostream& os, myClass& obj, bool foo1, bool foo2) {
os << (foo1 ? obj.getFoo1() : "") << (foo2 ? obj.getFoo2() : "");
return os;
}
现在我的主要问题是,我不需要else
语句。即使我不能在没有else
的情况下使用三元运算符,我也需要像" "
一样发送空间。我真的很想使用" "
,但我的obj.getFoo
不返回任何字符串值(它返回一个整数)。对于整数,没有"空格"。
有没有办法在cout
中获得if-else
语句(显然没有else
)?
如果使用to_string
:,则可以执行此操作
ostream& table(ostream& os, myClass& obj, bool foo1, bool foo2) {
os << (foo1 ? std::to_string(obj.getFoo1()) : "")
<< (foo2 ? std::to_string(obj.getFoo2()) : "");
return os;
}
现场演示
我个人只想做:
ostream& table(ostream& os, myClass& obj, bool foo1, bool foo2) {
if (foo1)
os << obj.getFoo1();
if (foo2)
os << obj.getFoo2();
return os;
}
无论如何,生成的代码将几乎相同,并且将避免打印空字符串,这将需要一些代码。
当你有一组很长的函数参数,并且只想改变一点点时,三元运算符非常适合:
func(arg1, arg2, arg3, (flag)?arg4a:arg4b, arg5, arg6, arg7);
[例如打印报表]
但对于流输出的情况,它实际上没有任何用处,因为的代码
a << b << c;
与相同
a << b; a << c;
[好吧,无论如何都差不多]
使用foo1 ? std::to_string(obj.getFoo1()) : std::string(" ")
。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 我似乎对if/else的基本语句有问题:/
- C++ If/Else 语句被跳过
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 如何将 if else 语句重写为 switch 语句
- 在 C++ 中的 if-else if- else 语句期间更改变量
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 为什么无论输入如何,所有 if-else 语句都会打印?
- 为什么切换 if else 语句的顺序会导致错误?
- 如何使用 if else 语句
- if/else 语句输出由于加号或减号而未显示正确的消息
- if-else 语句仅按特定顺序工作,我不知道为什么
- "if else"被视为单个语句吗?
- 试图避免在 for 循环中出现 if-else 语句,但代码似乎有一些错误
- 如何在 if-else 语句中使用 C++20 的可能/不太可能属性
- While循环和if/else语句工作不正常
- if 语句与 if-else 语句,哪个更快
- C++ - 为什么我的 else 语句在 if-else 语句中被忽略了?
- 嵌套IF语句vs IF- else