Il seguente codice deve rimuovere l'ultimo carattere di una stringa e aggiungere l
(L minuscola) se flip
è vero o r
se è falso.Comportamento anomalo con funzionamento ternario
std::stringstream ss;
ss << code.substr(0, code.size() - 1);
ss << flip ? "l" : "r";
std::string _code = ss.str();
Tuttavia, quando flip
è vero, aggiunge 1
e quando è falsa, aggiunge 0
. Come mai?
non relativo al problema a portata di mano, ma perché usare 'std :: stringstream' qui? Basta copiare la stringa, quindi impostare l'ultimo carattere usando 's [s.size() - 1] = (flip? 'L': 'r');'. (Del resto, non penso di aver mai usato 'std :: stringsream', anche se' std :: istringstream' e 'std :: ostringstream' appaiono frequentemente nel mio codice.) –