länge eines string arrays
-
hi,
ich hab folgendes problem. Ich würde gerne die Länge eines std::string arrays ermitteln. Das geht ja leider nich wie bei anderen arrays mit sizeof(dasArray)/sizeof(typDesArrays).
Ich hab auch ne Lösung gefunden allerdings geht die nur für den debug modus von VC++.Dafür das mich hier niemand falsch versteht. Ich will nicht die Länge eines std::strings ermitteln sondern eines std::string arrays, also die Anzahl der Elemente... also:
std::string arr[] = {"a", "b", "c"};Danke schonmal für jede hilfe
-
Das sollte eigentlich mit sizeof(dasArray)/sizeof(typDesArrays) gehen, was funktioniert denn nicht?
edit: Hier noch eine Demo:
#include <string> #include <iostream> int main() { std::string arr[] = { "Der Speicherplatz für den Inhalt des Strings liegt auf dem Heap", "Der String selbst ist bloß ein Struct mit ein paar Verwaltungsdaten und einem Pointer", "Stringarrays verhalten sich daher wie alle anderen Arrays auch, egal wie lang die Zeichenketten sind"}; std::cout<<sizeof(arr)/sizeof(std::string)<<std::endl; // 3 }
-
1700 schrieb:
Dafür das mich hier niemand falsch versteht. Ich will nicht die Länge eines std::strings ermitteln sondern eines std::string arrays, also die Anzahl der Elemente... also:
std::string arr[] = {"a", "b", "c"};Das geht ja leider nich wie bei anderen arrays mit sizeof(dasArray)/sizeof(typDesArrays).
Müsste aber.
sizeof(arr)/sizeof(arr[0])
-
hä ok... jetzt klappt es irgendwie echt.... sorry dann muss ich irgendwas falsch gemacht haben:D
alles klar danke thread kann geschlossen werden :D:D
-
1700 schrieb:
alles klar danke thread kann geschlossen werden :D:D
Nicht so schnell: Wenn du Arrays unbekannter Größe hast, bist du sicher, dass Arrays die optimale Datenstruktur für dein Problem sind? Vielleicht wäre sowas wie std::vector oder eine gekapselte Arrayklasse besser.
-
nene das is n vordefiniertes array... für dynamische zwecke nutze ich std::vector

-
1700 schrieb:
nene das is n vordefiniertes array... für dynamische zwecke nutze ich std::vector

Und für statische empfehle ich dir,
std::tr1::arrayzu nutzen (oderboost::array). Das hat keinen Overhead gegenüber BuiltIn-Arrays, aber besitzt Laufzeitprüfungen im Debug-Modus und ein STL-kompatibles Interface (z.B.size()-Methode), was beides von grossem Vorteil sein kann.Ich verwende kaum noch rohe Arrays und war schon mehrere Male um die Assertions von
std::tr1::arrayfroh, welche schwer auffindbare Fehler vermieden hatten.