HOWTO · C++
Cómo obtener el último carácter de una cadena en C++
Este artículo habla sobre cómo obtener el último carácter de una cadena en C++.
En esta página
Para una cadena como "Spider Man", text.back() se refiere directamente a su carácter final. También puede usar at(text.size() - 1) cuando desee un acceso posicional comprobado. La cadena debe contener un carácter antes de usar cualquiera de estos enfoques.
Utilice std::string::at para obtener el último carácter de una cadena en C++
std::string::at(index) devuelve el carácter en una posición de base cero y comprueba que la posición esté dentro de la cadena. La posición final es text.size() - 1. Si el índice está fuera de la cadena, at() lanza std::out_of_range; el tipo del índice es sin signo, por lo que un valor negativo se convierte en un valor sin signo grande en lugar de actuar como un índice negativo válido.
Ejecute este ejemplo:
#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';
}
El primer acceso usa el índice 3; el segundo calcula el índice final a partir de la longitud de la cadena. Compruebe que la cadena no esté vacía antes de calcular y usar esa posición final.
Utilice std::string::back() para obtener el último carácter de una cadena en C++
std::string::back() es la forma directa de acceder al carácter final. Devuelve una referencia, por lo que puede leer el carácter o asignar un reemplazo a través de esa referencia. Llamar a back() en una cadena vacía tiene un comportamiento indefinido, así que compruebe la cadena antes de usarlo.
#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';
}
La primera llamada lee n; la asignación cambia la cadena a "Spider Ma@".
Utilice std::string::rbegin() para obtener el último carácter de una cadena en C++
std::string::rbegin() devuelve un iterador inverso cuya primera posición corresponde al carácter final de la cadena. Desreferéncielo para leer ese carácter, siempre que la cadena no esté vacía.
#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';
}
Use rbegin() cuando trabaje con iteración inversa; para un solo carácter, back() es más directo.
Utilice std::reverse con iteradores de cadena para obtener el último carácter en C++
std::reverse es un algoritmo declarado en <algorithm>, no una función miembro de std::string. Invierte los elementos del rango de iteradores en el lugar. Después de invertir una cadena no vacía, text.front() se refiere al carácter que originalmente era el último. Esto cambia toda la cadena, por lo que normalmente es innecesario cuando solo necesita leer su carácter final.
#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';
}
El algoritmo opera en el rango semiabierto desde begin() hasta end(). Asegúrese de que la cadena no esté vacía antes de leer front() después.
Utilice std::string::substr() para obtener el último carácter de una cadena en C++
std::string::substr(position, count) devuelve una cadena nueva. Para una cadena con al menos un carácter, text.substr(text.size() - 1, 1) extrae su carácter final como una cadena de un carácter. Compruebe que haya un carácter antes de calcular la posición inicial.
#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';
}
Elija substr() cuando el resultado deba ser una cadena; use una operación de acceso a caracteres cuando un char sea suficiente.
Utilice la indexación de matrices para acceder a los caracteres de una cadena en C++
std::string admite operator[], por lo que el carácter final puede leerse como text[text.size() - 1] después de confirmar que la cadena no está vacía. A diferencia de at(), operator[] no proporciona el mismo acceso comprobado para una posición fuera de rango.
#include <iostream>
#include <string>
int main() {
const std::string text = "Spider Man";
std::cout << "The last character is: "
<< text[text.size() - 1] << '\n';
}
El índice es de base cero: para una cadena de longitud n, el carácter final está en el índice n - 1. Prefiera at() si desea que un índice fuera de rango se notifique mediante una excepción.
Conclusión
Para acceder directamente al carácter final de una std::string no vacía, use back(). Elija at(size() - 1) cuando el acceso posicional comprobado sea útil. rbegin() también llega al carácter final mediante iteración inversa, substr() lo devuelve como una cadena, y la indexación usa la misma posición final sin la comprobación de límites de at(). Compruebe que la cadena contiene un carácter antes de acceder a su final.