c++ - 使用三元运算符写入流?在 C++ 中

标签 c++ stream ternary-operator

我有几个 double 类型的点。我只想在它们不是 0 时将它们写入流中。另外我必须说出它是哪一个,像这样:

x1="值"

y1="value " 等等..

有什么办法可以这样吗:

    << ( (x1 != 0) ?  ( "x1=\"" << x1 << '"' )  : ' ') )
    << ( (y1 != 0) ?  ( "y1=\"" << y1 << '"' )  : ' ') )

或者我必须做几个 if else 语句?

最佳答案

代码将无法正常工作。 ?: 的两个操作数运算符必须评估为相同的数据类型。在你的例子中:

  • 左操作数甚至不是有效代码。类似 ( "x1=\"" << x1 << '"' ) 的表达式无效,因为您无法流式传输 doublechar转换为字符串文字(相当于 const char[] )。但如果它是有效代码,它的计算结果将是 std::ostream& , 这是 << 的标准输出类型运营商。

  • 右操作数是 char .

因为它们不匹配类型,所以您不能使用 ?: .您将不得不使用 if 分解代码改为声明:

if (x1 != 0)
    mystream << "x1=\"" << x1 << '"';
else
    mystream << ' ';

if (y1 != 0)
    mystream << "y1=\"" << y1 << '"';
else
    mystream << ' ';

关于c++ - 使用三元运算符写入流?在 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022652/

相关文章:

c# - Wcf 服务返回流但不会关闭

python - Pandas 中的 If-else 条件赋值

javascript - 三元(条件)运算符和样式

perl - 三元运算符不允许在其中使用迭代运算符,但 if-else 允许吗?

c++ - 在函数 gcry_cipher_encrypt C++ 上使用 gcrypt 时出错

c++ - ofstream 在看门狗超时前将文件刷新到磁盘

C++问题在类之间传递对象

c++ - 在不使用外部库的情况下在 C++ 中读取灰度 .jpeg 图像?

C# 将原始字节数组发送到网站

c++ - 在 C++ 中删除部分文件的最快方法