以下代码应该删除字符串的最后一个字符,并在l
为真时附加flip
(小写L),如果为假则附加r
。
std::stringstream ss;
ss << code.substr(0, code.size() - 1);
ss << flip ? "l" : "r";
std::string _code = ss.str();
但是,当flip
为真时,它会附加1
,当它为假时,会附加0
。怎么样?
答案 0 :(得分:19)
优先权问题。
ss << flip ? "l" : "r";
装置
(ss << flip) ? "l" : "r";
使用
ss << ( flip ? "l" : "r" );
答案 1 :(得分:4)
它与运算符优先级有关。
<<
的优先级高于?
,这意味着flip
首先会附加到ss
。
以下情况应导致预期的行为:
ss << (flip ? "l" : "r");