Bien sûr, std :: swap serait la bonne chose à faire ici, comme l'a souligné GMan. Mais permettez-moi de vous expliquer le problème avec votre code:
string tmpStr("ab");
const char& tmpChar = tmpStr[0];
tmpStr[0] = tmpStr[1];
tmpStr[1] = tmpChar;
tmpChar est en fait une référence à tmpStr [0]. Alors, voici ce qui va se passer:
| a | b | (initial content, tmpChar refers to first character)
| b | b | (after first assignment)
Notez que depuis tmpChar se réfère au premier caractère, il évalue maintenant à « b » et la seconde affectation ne effectivly rien:
| b | b | (after second assignment)
Si vous supprimez le & et faites de tmpChar une variable de caractère réelle, cela fonctionnera.
Pourquoi il devient '" bc "' pas '' ba''? – kennytm
Voulez-vous "bc" ou "ba"? –
Merci pour les commentaires et j'ai corrigé ma question. – q0987