Cómo invertir una cadena en C++
- Usar el Constructor de Cadenas para invertir una cadena
-
Use el algoritmo
std::reverse()
para invertir una cadena -
Usa
std::copy()
Algoritmo para revertir la cadena
Este artículo explicará cómo invertir una cadena en C++.
Usar el Constructor de Cadenas para invertir una cadena
std::basic_string
tiene el constructor, que puede construir una cadena con el contenido del rango. Podemos entonces declarar una nueva variable de cadena y alimentar a su constructor con los iteradores inversos de la variable de cadena original - tmp_s
. El siguiente ejemplo demuestra este método y da salida a ambas cadenas para su verificación.
#include <algorithm>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
string tmp_s_reversed(tmp_s.rbegin(), tmp_s.rend());
cout << tmp_s_reversed << endl;
return EXIT_SUCCESS;
}
Resultado:
This string will be reversed
desrever eb lliw gnirts sihT
Use el algoritmo std::reverse()
para invertir una cadena
El método std::reverse
es de la biblioteca STL <algorithm>
, e invierte el orden de los elementos en el rango. El método opera sobre los objetos pasados como argumentos y no devuelve una nueva copia de los datos, por lo que necesitamos declarar otra variable para preservar la cadena original.
Nótese que la función reverse
lanza la excepción std::bad_alloc
si el algoritmo falla en la asignación de memoria.
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
string tmp_s_reversed(tmp_s);
reverse(tmp_s_reversed.begin(), tmp_s_reversed.end());
cout << tmp_s_reversed << endl;
return EXIT_SUCCESS;
}
Usa std::copy()
Algoritmo para revertir la cadena
std::copy
es otro poderoso algoritmo, que puede ser utilizado para múltiples escenarios. Esta solución inicializa una nueva variable de cadena y modifica su tamaño usando el método incorporado de size
. A continuación, llamamos al método copy
para llenar la cadena declarada con los datos de la cadena original. Nótese, sin embargo, que los dos primeros parámetros deben ser iteradores inversos del rango de la fuente.
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
string tmp_s_reversed;
tmp_s_reversed.resize(tmp_s.size());
copy(tmp_s.rbegin(), tmp_s.rend(), tmp_s_reversed.begin());
cout << tmp_s_reversed << endl;
return EXIT_SUCCESS;
}
En caso de que los datos de la cadena invertida no necesiten ser almacenados, podemos usar el algoritmo copy()
para emitir directamente los datos de la cadena en orden inverso a la consola como se muestra en el siguiente ejemplo de código:
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
copy(tmp_s.rbegin(), tmp_s.rend(), std::ostream_iterator<char>(cout, ""));
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArtículo relacionado - C++ String
- Encuentre el primer carácter repetido en una cadena en C++
- Encuentre la subcadena común más larga en C++
- Poner en mayúscula la primera letra de una cadena en C++
- Comparación de cadenas y caracteres en C++
- Eliminar el último carácter de una cadena en C++
- Obtener el último carácter de una cadena en C++