三元运算奇怪的行为

Nac*_*eme 5 c++ stringstream ternary-operator

以下代码应该删除字符串的最后一个字符,l如果flip为true或者为false,r则追加(小写L).

std::stringstream ss;
ss << code.substr(0, code.size() - 1);
ss << flip ? "l" : "r";
std::string _code = ss.str();
Run Code Online (Sandbox Code Playgroud)

但是,当flip它为真时,它会附加1,当它为假时,它会附加0.怎么会?

ike*_*ami 19

优先权问题.

ss << flip ? "l" : "r";
Run Code Online (Sandbox Code Playgroud)

手段

(ss << flip) ? "l" : "r";
Run Code Online (Sandbox Code Playgroud)

使用

ss << ( flip ? "l" : "r" );
Run Code Online (Sandbox Code Playgroud)