Mehrere Fragen zu Arrays und Typecast
-
Hallo Leute,
bin schon sehr verzweifelt inzwischen weil mein Programm soviele Fehler ausspuckt.
Meine Fragen sind folgende:a) kann man Arrays mit dynamischer (=Benutzereingaben-Integer) Größe erzeugen? Wenn ja, wie ist das am einfachsten möglich?
b) Wie kann ich einer Funktion ein Array übergeben? Die Funktion mault v.a. wieder wegen der fehlenden Größe rum...
c) Wie kann ich einen string in einen double-Wert casten?
.edit: Hab c) gelöst... atof(Variable.data()); ...Bin echt am Ende... Wer mag mir helfen? Wäre sehr dankbar... gibt n Bier ^^
Grüße
-
Hallo,
a)
mit Hilfe von new
http://tutorial.schornboeck.net/dyn_speicher.htm
oder auch std::vector
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html
b) bei der ersten Variante mußt du die Größe separat mit übergeben (das Array als Pointer). Bei der zweiten Variante kannst du den vector direkt (besser als konstante Referenz) übergeben.
c)
siehe FAQVielleicht wäre es auch hilfreiech weitere Kapitel des oben genannten Tutorials durchzuarbeiten (Referenzen, Zeiger).
-
Hmmm, Zeiger... Hab ich mir schon angetan, vermutlich zu wenig. Werde das jetzt nachholen... müssen

Zur Lösung der Arrays dynamischer Größe:
Wow, ist ja echt einfach! Vielen Dank!Werde mich jetzt weiter darum kümmern... Also, wie gesagt, bin sehr dankbar!
Grüße
.edit:
double streckeberechnen(string Stadt[][], int n)meine Funktion
undstring* arr; arr = new string[numb][3];erzeugt mein array... wie übergebe ich da die Größe separat? noch nen parameter int mit übergeben der gleich numb ist?
-
Das mit der variablen Größe (und der impliziten Umwandlung Array->Pointer) funktioniert leider nur in einer Dimension, also mußt du die innere Dimension des Arrays trotzdem direkt angeben. Als Alterantive bleibt noch ein vector<vector<T> >, ein T** (den du vermutlich selber aufbereiten mußt) oder eine Indexumrechnung von 2D auf 1D.
-
Falls Boost vorhanden ist kannst du boost::multi_array verwenden für multidimensionale Arrays. Die übergabe zur Funktion erübrigt sich ja dann ebenfalls (konstante Referenz, ...). Zum umwandeln von string in double kannst du z.B. auch boost::lexical_cast verwenden, das is etwas besser als die Vorschläge im FAQ.
grüße
-
David_pb schrieb:
Zum umwandeln von string in double kannst du z.B. auch boost::lexical_cast verwenden, das is etwas besser als die Vorschläge im FAQ.
Wieso das? Afaik ist boost::lexical_cast nur ein verallgemeinerter Wrapper um die stringstream-Lösung.
-
Hm, spontan fällt mir da ein: Es ist leichter zu benutzen, hat implizit automatischen unicode Support (wstringstream), wirft einen eigenen Exceptiontyp bei nicht erfolgreicher Umwandlung.

grüße