Der Datentyp string
-
hallo,
ich will eine methode schreiben die ein string Array zurückliefert
aber es scheint zu sen das eine Porblem mit der Datentyp string gibt es
#include<string> ... string[] myFunction( string xy) { string A[string.length()]; return A; }
ist die Vorgehensweisee richtig ???
-
nö
du erzeugst ein array, dass eine größe hat, die erst zur laufzeit feststeht -> compile-time-error, dein code wird sich also nicht kompilieren lassen.wenn es gehen würde, würdest du ein array von std::strings erzeugen, das am ende der funktion gelöscht werden würde - du würdest einen zeiger auf nicht mehr existente daten zurückgeben.
kurz: du musst dir eine andere lösung suchen.
C++ bietet dir einiges hilfreiches, z.b. vektoren (std::vector) und den std::auto_ptr. damit kannst du z.b. ein array von auto_ptr zurückgeben, wobei jeder auf einen string zeigt.oder du sagst genauer, was du tun willst und wir bieten dir vorschläge an, wie du dein problem lösen kannst.
-
hallo,
was ich will eine Methode die Als Parameter eine string bekommt
string myString ="ABCDEFG";diese String soll in einer string Array geschriben werden und diese Methode liefert den Array zurück.
danke für die Hilfe
-
returne doch einen
vector<string>
-
Original erstellt von Shade Of Mine:
returne doch einen
vector<string>schreibe.resize(x); //setzt vector auf x elemente
[ Dieser Beitrag wurde am 27.05.2003 um 09:49 Uhr von Spieleprogrammierer editiert. ]
-
In welchem zusammenhang steht das nun ?! Ich sehe diesen nicht wenn es um das zurückliefern des vectors geht.
Man kann mit resize sicherlich mehrfaches alloc sparen was aber nur beim befüllen des vectors eine Rolle spielt.
Schreib mal bitte was Du mit dem resize beabsichtigst. thx
-
Original erstellt von Knuddlbaer:
**In welchem zusammenhang steht das nun ?! Ich sehe diesen nicht wenn es um das zurückliefern des vectors geht.Man kann mit resize sicherlich mehrfaches alloc sparen was aber nur beim befüllen des vectors eine Rolle spielt.
Schreib mal bitte was Du mit dem resize beabsichtigst. thx**
Und hier die Antwort:
Wenn er ein normales Array nimmt, kann es passieren, dass er über den reservierten Speicherplatz hinaus geht, weil dies einen Fehler verursachen KANN, muss aber nicht, und einer meinte, dass man vector nehmen könnte / sollte, habe ich ihn gleich "erklärt", wie man den reservierten Speicher dann auch erhöhen kann.
[ Dieser Beitrag wurde am 27.05.2003 um 13:45 Uhr von Spieleprogrammierer editiert. ]
-
sicher, dass du nicht reserve meinst?
-
KANN, muss aber nicht, und einer meinte, dass man vector nehmen könnte / sollte, habe ich ihn gleich "erklärt", wie man den reservierten Speicher dann auch erhöhen kann.
Der std::vector organisiert sich den speicher selbstständig, soll heissen man muß den speicher nicht explizit vorher anfordern. (Das macht den vector ja u.a. so attraktiv
Aus der tatsache wusst ich halt nicht wie Dein Beitrag gemeint war, aber nu hab ich es ja verstanden ;o)