我有几个 double
类型的点。我只想在它们不是 0
时将它们写入流中。另外我必须说出它是哪一个,像这样:
x1="值"
y1="value "
等等..
有什么办法可以这样吗:
<< ( (x1 != 0) ? ( "x1=\"" << x1 << '"' ) : ' ') )
<< ( (y1 != 0) ? ( "y1=\"" << y1 << '"' ) : ' ') )
或者我必须做几个 if
else
语句?
最佳答案
代码将无法正常工作。 ?:
的两个操作数运算符必须评估为相同的数据类型。在你的例子中:
左操作数甚至不是有效代码。类似
( "x1=\"" << x1 << '"' )
的表达式无效,因为您无法流式传输double
或char
转换为字符串文字(相当于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/