Array auf dem Heap Werte zuweisen !



  • ich nehme an du hast ein Char-Array vorliegen?!
    dann:

    char a[100] = "Bla";
    	std::string s(a);
    


  • Hi,

    ein String ist doch immer ein Array drum kann ich doch mit dem Arrayzugriffsoperator drauf zugreifen !?!?

    😉
    SE



  • Hi Murckser,
    Einen Sring aus der Klasse string.h !
    😉
    SE



  • ShadowEater schrieb:

    ein String ist doch immer ein Array drum kann ich doch mit dem Arrayzugriffsoperator drauf zugreifen !?!?

    Ja, aber ein leerer String hat noch keinen Speicherplatz angefordert, auf den du zugreifen könntest. Die Größe mußt du entweder beim new-Aufruf mit angeben oder per resize() anpassen.

    (und außerdem verwendet deine Schleife dort oben nicht den String-eigenen op[], sondern fasst den Zeiger als den Anfang eines String-Arrays auf (was heißt, daß kText[0] aka *kText der (leere) mit new angewforderte String und kTest[1] und weitere reiner Datenmüll sind))



  • ein String IST kein Array.
    In C werden char-Arrays auch als strings bezeichnet, allerdings gibts dort keine klasse namens strig.
    In der STL gibts die KLasse std::string, die zwar ein array BEINHALTET (bzw. kann sie das, es ist nicht festgelegt), aber nicht mit einem Array gleichzusetzxen ist.

    mit new string legst du Speicher fuer ein einzelnes Objekt der Klasse string an (wie auch immer diese Klasse definiert ist) und fuerst in diesem Speicher die Konstruktion der Klasse aus. Der Indexoperator (die eckigen KLammern []) ist zwar fuer viele String-Klassen vorhanden, muss es aber nicht sein. Insofern kommts ganz darauf an, was das fuer eine Klasse string ist, die du da hast.

    Zeig uns am betsen mal etwas vom Kontext (d.h. woher du die klasse string hast, was du mit deinem Programm erreichen willst etc.)



  • Hi CStoll,

    kText		= new string[6];
    

    das war die Lösung, aber wenn ich als Dimension die 6 angebe kann ich dann nur auf 6 Elemente zugreifen hab ich mir die Dynamik damit kaputt gemacht ?

    Danke für Deine Mühe
    😉
    SE



  • Hi Pumuckel,

    die Klasse hab ich in VC 6++ einfach includiert

    #include<string>
    using namespace std;
    

    Ich möchte den Inhalt des statischen Arrays mit dem Inhalt des dyn. vergleichen und bei zutreffen die gleichen Elemente in ein dy. Array schreiben !

    Danke für Deine Mühe
    😉
    SE



  • Hi,

    also googel erschlägt mich mit zig Array Artikeln nur nix zu diesem Thema 😢 !
    Sobald ich eine Dimension angebe ist doch das Array statisch und nicht mehr dynamisch ???
    Im Konstruktor:

    kText = new string[6];
    

    Im Public Teil:

    string (*kText);
    

    😉
    SE



  • Hmmm,

    weis denn echt echt keiner Rat ?

    😉
    ShadowEater



  • O.K.

    hat geklappt, Danke nochmal !!!

    😉
    SE
    😃



  • Und zum zweiten: Statt das Array selber über new/delete zu verwalten solltest du lieber einen vector<string> verwenden.



  • Jap,

    werds mir merken !!!

    😉
    SE


Anmelden zum Antworten