Cómo devolver una cadena de una función en C++
-
Usa la notación
std::string func()
para devolver una cadena desde una función en C++ -
Usa la notación
std::string &func()
para devolver la cadena de la función -
Use la notación
char *func()
para devolver la cadena de la función
Este artículo explica varios métodos sobre cómo se puede devolver una cadena de una función en C++.
Usa la notación std::string func()
para devolver una cadena desde una función en C++
El retorno por el valor es el método preferido para devolver los objetos de cadena de las funciones. Como la clase std::string
tiene el constructor move
, devolver incluso las cadenas largas por el valor es eficiente. Si un objeto tiene un constructor de move
, se dice que está caracterizado por la semántica del movimiento. La semántica de movimiento implica que el objeto no se copia a un lugar diferente en el retorno de la función, por lo que proporciona un tiempo de ejecución de la función más rápido.
#include <algorithm>
#include <iostream>
#include <iterator>
using std::cout;
using std::endl;
using std::reverse;
using std::string;
string ReverseString(string &s) {
string rev(s.rbegin(), s.rend());
return rev;
}
int main() {
string str = "This string shall be reversed";
cout << str << endl;
cout << ReverseString(str) << endl;
return EXIT_SUCCESS;
}
Resultado:
This string shall be reversed
desrever eb llahs gnirts sihT
Usa la notación std::string &func()
para devolver la cadena de la función
Este método utiliza la notación de retorno por referencia, que puede ser un enfoque alternativo a este problema. Aunque el retorno por referencia es la forma más eficiente de devolver grandes estructuras o clases, no impondría gastos generales adicionales en comparación con el método anterior en este caso. Tenga en cuenta que no debe sustituir una variable local declarada en la función por una referencia; esto conduce a una referencia colgante.
#include <algorithm>
#include <iostream>
#include <iterator>
using std::cout;
using std::endl;
using std::reverse;
using std::string;
string &ReverseString(string &s) {
reverse(s.begin(), s.end());
return s;
}
int main() {
string str = "Let this string be reversed";
cout << str << endl;
cout << ReverseString(str) << endl;
return EXIT_SUCCESS;
}
Resultado:
Let this string be reversed
desrever eb gnirts siht teL
Use la notación char *func()
para devolver la cadena de la función
Alternativamente, podemos usar char
para devolver un objeto de cadena de una función. Recadena que la clase std::string
almacena los caracteres como un array continuo. Por lo tanto, podemos devolver un puntero al primer elemento char
de ese array llamando al método incorporado data()
. Sin embargo, asegúrate de no usar un método similar a c_str()
cuando devuelvas el array de caracteres terminados en cero del objeto std::string
, ya que reemplaza el puntero const
al primer elemento char
.
#include <algorithm>
#include <iostream>
#include <iterator>
using std::cout;
using std::endl;
using std::reverse;
using std::string;
char *ReverseString(string &s) {
reverse(s.begin(), s.end());
return s.data();
}
int main() {
string str = "This string must be reversed";
cout << str << endl;
cout << ReverseString(str) << endl;
return EXIT_SUCCESS;
}
Resultado:
This string must be reversed
desrever eb tsum gnirts sihT
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++