HOWTO · C++
Comment obtenir le dernier caractère d'une chaîne en C++
Cet article explique comment obtenir le dernier caractère d'une chaîne en C++.
Sur cette page
Pour une chaîne telle que "Spider Man", text.back() fait directement référence à son dernier caractère. Vous pouvez également utiliser at(text.size() - 1) lorsque vous souhaitez un accès positionnel vérifié. La chaîne doit contenir un caractère avant d’utiliser l’une de ces approches.
Utilisez std::string::at pour obtenir le dernier caractère d’une chaîne en C++
std::string::at(index) renvoie le caractère à une position de base zéro et vérifie que la position se trouve dans la chaîne. La position finale est text.size() - 1. Si l’index est en dehors de la chaîne, at() lève std::out_of_range ; le type d’index est non signé, donc une valeur négative se convertit en une grande valeur non signée au lieu d’agir comme un index négatif valide.
Exécutez cet exemple :
#include <iostream>
#include <string>
int main() {
const std::string text = "Spider Man";
std::cout << "Character at position 3: " << text.at(3) << '\n';
std::cout << "Character at last position: "
<< text.at(text.size() - 1) << '\n';
}
Le premier accès utilise l’index 3 ; le second calcule l’index final à partir de la longueur de la chaîne. Vérifiez que la chaîne n’est pas vide avant de calculer et d’utiliser cette position finale.
Utilisez std::string::back() pour obtenir le dernier caractère d’une chaîne en C++
std::string::back() est la façon directe d’accéder au dernier caractère. Il renvoie une référence, vous pouvez donc lire le caractère ou affecter un remplacement via cette référence. Appeler back() sur une chaîne vide a un comportement indéfini, vérifiez donc la chaîne avant de l’utiliser.
#include <iostream>
#include <string>
int main() {
std::string text = "Spider Man";
const char last = text.back();
std::cout << "Character at the end: " << last << '\n';
text.back() = '@';
std::cout << "After replacement: " << text << '\n';
}
Le premier appel lit n ; l’affectation change la chaîne en "Spider Ma@".
Utilisez std::string::rbegin() pour obtenir le dernier caractère d’une chaîne en C++
std::string::rbegin() renvoie un itérateur inverse dont la première position correspond au dernier caractère de la chaîne. Déréférencez-le pour lire ce caractère, à condition que la chaîne ne soit pas vide.
#include <iostream>
#include <string>
int main() {
const std::string text = "Spider Man";
const auto last = *text.rbegin();
std::cout << "The last character is: " << last << '\n';
}
Utilisez rbegin() lorsque vous travaillez avec une itération inverse ; pour un seul caractère, back() est plus direct.
Utilisez std::reverse avec des itérateurs de chaîne pour obtenir le dernier caractère en C++
std::reverse est un algorithme déclaré dans <algorithm>, et non une fonction membre de std::string. Il inverse les éléments de la plage d’itérateurs en place. Après avoir inversé une chaîne non vide, text.front() fait référence au caractère qui était à l’origine le dernier. Cela modifie toute la chaîne, donc c’est généralement inutile lorsque vous avez seulement besoin de lire son dernier caractère.
#include <algorithm>
#include <iostream>
#include <string>
int main() {
std::string text = "Spider Man";
std::reverse(text.begin(), text.end());
std::cout << "The former last character is: " << text.front() << '\n';
}
L’algorithme opère sur la plage semi-ouverte de begin() à end(). Assurez-vous que la chaîne n’est pas vide avant de lire front() ensuite.
Utilisez std::string::substr() pour obtenir le dernier caractère d’une chaîne en C++
std::string::substr(position, count) renvoie une nouvelle chaîne. Pour une chaîne comportant au moins un caractère, text.substr(text.size() - 1, 1) extrait son dernier caractère sous forme d’une chaîne d’un caractère. Vérifiez la présence d’un caractère avant de calculer la position de départ.
#include <iostream>
#include <string>
int main() {
const std::string text = "Spider Man";
const std::string last = text.substr(text.size() - 1, 1);
std::cout << "Last character extracted: " << last << '\n';
}
Choisissez substr() lorsque le résultat doit être une chaîne ; utilisez une opération d’accès à un caractère lorsqu’un char suffit.
Utilisez l’indexation de tableau pour accéder aux caractères d’une chaîne en C++
std::string prend en charge operator[], donc le dernier caractère peut être lu comme text[text.size() - 1] après avoir confirmé que la chaîne n’est pas vide. Contrairement à at(), operator[] ne fournit pas le même accès vérifié pour une position hors limites.
#include <iostream>
#include <string>
int main() {
const std::string text = "Spider Man";
std::cout << "The last character is: "
<< text[text.size() - 1] << '\n';
}
L’index est de base zéro : pour une chaîne de longueur n, le dernier caractère se trouve à l’index n - 1. Préférez at() si vous souhaitez qu’un index hors limites soit signalé par une exception.
Conclusion
Pour un accès direct au dernier caractère d’une std::string non vide, utilisez back(). Choisissez at(size() - 1) lorsqu’un accès positionnel vérifié est utile. rbegin() atteint également le dernier caractère par itération inverse, substr() le renvoie sous forme de chaîne, et l’indexation utilise la même position finale sans la vérification des limites de at(). Vérifiez que la chaîne contient un caractère avant d’accéder à sa fin.