So geben Sie eine Zeichenkette aus einer Funktion in C++ zurück
-
Verwenden Sie die Notation
std::string func()
, um eine Zeichenkette von einer Funktion in C++ zurückzugeben -
Verwenden Sie die Notation
std::string &func()
, um einen String von der Funktion zurückzugeben -
Verwenden Sie die
char *func()
Notation, um Zeichenkette von der Funktion zurückzugeben
In diesem Artikel werden mehrere Methoden erläutert, wie Sie eine Zeichenkette aus einer Funktion in C++ zurückgeben können.
Verwenden Sie die Notation std::string func()
, um eine Zeichenkette von einer Funktion in C++ zurückzugeben
Die Rückgabe nach dem Wert ist die bevorzugte Methode zur Rückgabe von String-Objekten aus Funktionen. Da die Klasse std::string
über den Konstruktor move
verfügt, ist es effizient, auch lange Zeichenketten als Wert zurückzugeben. Wenn ein Objekt einen move
-Konstruktor hat, wird es mit der move
-Semantik charakterisiert. Die Bewegungs-Semantik impliziert, dass das Objekt bei der Funktionsrückgabe nicht an eine andere Stelle kopiert wird, wodurch eine schnellere Funktionsausführungszeit erreicht wird.
#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;
}
Ausgabe:
This string shall be reversed
desrever eb llahs gnirts sihT
Verwenden Sie die Notation std::string &func()
, um einen String von der Funktion zurückzugeben
Bei dieser Methode wird die Rückgabe durch Referenznotation verwendet, was ein alternativer Ansatz für dieses Problem sein kann. Auch wenn die Rückgabe per Referenz die effizienteste Methode zur Rückgabe großer Strukturen oder Klassen ist, würde sie in diesem Fall im Vergleich zur vorherigen Methode keinen zusätzlichen Aufwand verursachen. Beachten Sie, dass Sie eine in der Funktion deklarierte lokale Variable nicht durch eine Referenz ersetzen sollten; dies führt zu einer baumelnden Referenz.
#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;
}
Ausgabe:
Let this string be reversed
desrever eb gnirts siht teL
Verwenden Sie die char *func()
Notation, um Zeichenkette von der Funktion zurückzugeben
Alternativ können wir char *
verwenden, um ein String-Objekt von einer Funktion zurückzugeben. Denken Sie daran, dass die Klasse std::string
Zeichen als ein kontinuierliches Array speichert. Daher können wir einen Zeiger auf das erste Element char
dieses Arrays zurückgeben, indem wir die eingebaute Methode data()
aufrufen. Stellen Sie jedoch sicher, dass Sie keine ähnliche c_str()
Methode verwenden, wenn Sie ein null-terminiertes Zeichenarray eines std::string
Objekts zurückgeben, da es den const
Zeiger auf das erste char
Element ersetzt.
#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;
}
Ausgabe:
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 FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++