Récupère le dernier élément d’une chaîne std ::

Je me demandais s’il y avait une abréviation ou une manière plus élégante d’obtenir le dernier caractère d’une chaîne comme dans:

char lastChar = mySsortingng.at( mySsortingng.length() - 1 ); 

Quelque chose comme mySsortingng.back() ne semble pas exister. Y a-t-il un équivalent?

En C ++ 11, vous pouvez utiliser la fonction membre back :

 char ch = myStr.back(); 

En C ++ 03, std::ssortingng::back n’est pas disponible en raison d’un oubli, mais vous pouvez contourner ce reverse_iterator le reverse_iterator vous recevez de rbegin :

 char ch = *myStr.rbegin(); 

J’espère que cela t’aides!

Vous voulez probablement vérifier d’abord la longueur de la chaîne et faire quelque chose comme ceci:

 if (!myStr.empty()) { char lastChar = *myStr.rbegin(); } 

Vous pouvez écrire un modèle de fonction qui délègue à la fonction membre des conteneurs ordinaires et une fonction normale qui implémente la fonctionnalité manquante pour les chaînes:

 template  typename C::reference back(C& container) { return container.back(); } template  typename C::const_reference back(const C& container) { return container.back(); } char& back(std::ssortingng& str) { return *(str.end() - 1); } char back(const std::ssortingng& str) { return *(str.end() - 1); } 

Ensuite, vous pouvez simplement dire back(foo) sans vous soucier de savoir si foo est une chaîne ou un vecteur.

*(mySsortingng.end() - 1) peut-être? Ce n’est pas exactement élégant non plus.

Un python-esque mySsortingng.at(-1) demanderait trop une classe déjà gonflée.