Comment retourner une chaîne de caractères à partir d'une fonction en C++
-
Utilisez la notation
std::string func()
pour retourner une chaîne de caractères à partir d’une fonction en C++ -
Utilisez la notation
std::string &func()
pour retourner la chaîne de la fonction -
Utilisez la notation
char *func()
pour retourner la chaîne de caractères de la fonction
Cet article explique plusieurs méthodes permettant de retourner une chaîne de caractères à partir d’une fonction en C++.
Utilisez la notation std::string func()
pour retourner une chaîne de caractères à partir d’une fonction en C++
Le retour par la valeur est la méthode préférée pour retourner des objets de type chaîne de caractères à partir de fonctions. Puisque la classe std::string
a le constructeur move
, retourner même les longues chaînes de caractères par valeur est efficace. Si un objet a un constructeur move
, on dit qu’il est caractérisé par une sémantique de déplacement. La sémantique des mouvements implique que l’objet n’est pas copié à un emplacement différent lors du retour de la fonction, ce qui permet d’accélérer le temps d’exécution de la fonction.
#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;
}
Production:
This string shall be reversed
desrever eb llahs gnirts sihT
Utilisez la notation std::string &func()
pour retourner la chaîne de la fonction
Cette méthode utilise le retour par notation de référence, qui peut être une approche alternative à ce problème. Même si le retour par référence est le moyen le plus efficace de renvoyer de grandes structures ou classes, il n’imposerait pas de frais généraux supplémentaires par rapport à la méthode précédente dans ce cas. Notez que vous ne devez pas remplacer une variable locale déclarée dans la fonction par une référence ; cela conduit à une référence pendante.
#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;
}
Production:
Let this string be reversed
desrever eb gnirts siht teL
Utilisez la notation char *func()
pour retourner la chaîne de caractères de la fonction
On peut aussi utiliser char *
pour retourner une chaîne de caractères à partir d’une fonction. Rappelez-vous que la classe std::string
stocke les caractères sous forme de tableau continu. Ainsi, nous pouvons renvoyer un pointeur vers le premier élément char
de ce tableau en appelant la méthode intégrée data()
. Cependant, assurez-vous que vous n’utilisez pas une méthode similaire c_str()
pour retourner un tableau de caractères à terminaison nulle de l’objet std::string
, car elle remplace le pointeur const
vers le premier élément 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;
}
Production:
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 FacebookArticle connexe - C++ String
- Comparaison de chaîne et de caractère en C++
- Supprimer le dernier caractère d'une chaîne en C++
- Obtenir le dernier caractère d'une chaîne en C++
- Différences entre l'opérateur sizeof et la fonction strlen pour les chaînes en C++
- Effacer la chaîne en C++
- Imprimer toutes les permutations de la chaîne en C++