Pet*_* D. 2 c++ stream ternary-operator
我有几点类型double.我想在流中写它们时才将它们写在流中0.我还要说它是哪一个,像这样:
x1=" value "
y1=" value " 等等..
有没有办法像这样做:
<< ( (x1 != 0) ? ( "x1=\"" << x1 << '"' ) : ' ') )
<< ( (y1 != 0) ? ( "y1=\"" << y1 << '"' ) : ' ') )
Run Code Online (Sandbox Code Playgroud)
或者我必须做几个if else陈述?
代码将无法正常工作.运算?:符的两个操作数必须评估为相同的数据类型.在你的例子中:
左操作数甚至不是有效代码.类似( "x1=\"" << x1 << '"' )的表达式无效,因为您无法将a double或a 流式传输char到字符串文字(相当于a const char[]).但如果它是有效的代码,它将评估为a std::ostream&,这是<<运算符的标准输出类型.
右操作数是一个char.
由于它们不匹配类型,因此无法使用?:.您将不得不使用if语句来分解代码:
if (x1 != 0)
mystream << "x1=\"" << x1 << '"';
else
mystream << ' ';
if (y1 != 0)
mystream << "y1=\"" << y1 << '"';
else
mystream << ' ';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
479 次 |
| 最近记录: |