Funktion
-
Guten Abend.
Ich programmiere erst seit kurzem C++ und habe ein Problem und zwar möchte ich eine Funktion schreiben, die ein String zurück gibt.
const char* getstr()
{
}aber wie kann ich das umsetzen?
-
Eine solche Funktion müsste in C++ so aussehen:
#include <string> using namespace std; string getstr() { return "Hallo!"; }
-
std::string getstr() { std::string result("Hello World"); // ... return result; }p.s. BBCode: {cpp}Dein Code hier{/cpp}, { & } durch [ & ] ersetzen
-
Muss ich unbedingt string verwenden?
-
xoox schrieb:
Muss ich unbedingt string verwenden?
Nein.
-
wie kann ich das ohne std::string bewältigen?
-
Du kannst einen Text (um es nicht mit std::string zu verwechseln) nicht einfach so zurückgeben. Aber du kannst die Adresse zurückgeben an der sich der String befindet. Und das geht ganz leicht:
const char* getstr() { return "Hallo Welt!"; }
-
thx, habe es hin bekommen!!!
-
ist die adresse denn nicht außerhalb der funktion ungültig? muss man nicht speicher auf dem heap erzeugen, damit sie außerhalb der funktion noch gültig ist? wenn ja, dann kann man es so machen:
#include <iostream> #include <cstring> using namespace std; char *baueString() { char local[] = "Hallo"; char *result = new char[sizeof(local)]; strcpy(result, local); return result; } int main() { char *c_string = baueString(); cout << c_string << endl; delete[] c_string; cin.get(); }
-
Nein muss man nicht.
void func() { char string_a[] = "hallo"; char const* string_b = "hallo"; }A: Legt 6 bytes auf dem Stack an und schreibt dort den Text hinein. Am Ende der Funktion ist der Speicher auf dem Stack weg.
B: Ein Zeiger auf einen konstanten String der gaaaanz wo anderst ist. Hier wird also nur ein Zeiger auf den Stack gelegt, nicht der String!