使用`?:`在输出流中
using `?:` in the output stream
我想在输出流中集成?:
运算符。这是代码
bool a;
for (int i = 0; i < 10; i++ ) {
a = rand() % 2;
std::cout << "a= " << (a) ? "truen" : "falsen";
}
但是输出是
a= 1a= 0a= 1a= 1a= 1a= 1a= 0a= 0a= 1a= 1
问题是,没有新行和字符串。我该怎么办?
这是因为输出运算符<<
的优先级高于三元运算符?:
。所以对于编译器来说,它和是一样的
(std::cout << "a= " << (a)) ? "truen" : "falsen";
您需要明确地将括号放在正确的位置:
std::cout << "a= " << (a ? "truen" : "falsen");
或者,由于a
已经是bool
,您可以使用std::boolalpha
直接打印:
std::cout << "a= " << std::boolalpha << a << 'n';
您需要使用一些括号来覆盖默认的优先级规则:
std::cout << "a= " << ((a) ? "truen" : "falsen");
相关文章:
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 在输出流中插入换行符
- 在类外部重载输入和输出流
- 通用容器的输出流
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 为什么C++流使用状态位
- 获取C++输出流中元素的大小
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 控制多线程程序中的输出流
- 为什么输出流首选" "而不是""?
- C++ 输出流运算符 <<() 中的字符何时加宽?
- 为什么int8_t的输出格式使用 4 个字节?
- 音频缓冲区列表,用于输出流格式已压缩的 AUHAL 单元
- 如何将值发送到标准输出流并在另一个程序中访问这些值
- 我必须如何将OpenCV输出流到我自己的远程C GUI
- 双重释放或损坏(输出):使用向量的组合算法0x0000000001a880a0***
- 使用`?:`在输出流中
- 将facet应用于所有流输出,使用自定义字符串操作符
- 如何使用标头中定义的输出流运算符