Adresse von String



  • Das ist aber eine ganz schlechte Idee. Sobald du am String irgendwas veränderst, kann der Zeiger ungültig werden. Entweder den Puffer immer mit c_str() neu holen oder gleich einen eigenen Speicherbereich reservieren.

    Zudem: Wenn du eine Adresse eines char s ausgeben willst, musst du zuerst zu einem anderen Zeiger casten, da char -Zeiger als C-Strings interpretiert werden:

    std::cout << static_cast<void*>(CharPtr) << std::endl;
    

  • Administrator

    Eh, WIE BITTE?
    In ptest ist ja die Adresse gespeichert.

    std::string test = "Hallo";
    const char* ptest = test.c_str();
    
    // Das Problem bei der Ausgabe ist,
    // dass ein const char* als C String interpretiert wird.
    
    // Wenn du den Zeiger willst, musst du den Zeiger in void* casten.
    void* pointer = ptest;
    
    std::cout << pointer << std::endl;
    

    Grüssli



  • danke sehr für die Hilfe. funk jez ohne problem.



  • @Dravere: Kannst du mal kurz erklären, warum hier ein void* cast? Und was der an dieser Stelle macht?Weil die void casts die haben mir nie so richtig eingeleuchtet.



  • Firefighter schrieb:

    @Dravere: Kannst du mal kurz erklären, warum hier ein void* cast? Und was der an dieser Stelle macht?Weil die void casts die haben mir nie so richtig eingeleuchtet.

    Weil std::ostream für char* so überladen ist, dass er es als C-String interpretiert. Für void* hingegen wird die gespeicherte Adresse hexadezimal ausgegeben.


  • Administrator

    Firefighter schrieb:

    @Dravere: Kannst du mal kurz erklären, warum hier ein void* cast? Und was der an dieser Stelle macht?Weil die void casts die haben mir nie so richtig eingeleuchtet.

    Wie Tachyon gesagt hat, allerdings habe ich das doch auch in den Kommentaren des Quellcodes erklärt? 🙂
    War das so unverständlich?

    Grüssli



  • Ahhh ok...nee jetzt ist einleuchtend.Danke an euch Beide.



  • Dravere schrieb:

    War das so unverständlich?

    Der Quelltext ist etwas verwirrend, weil in der letzten Instruktion doch wieder ptest ausgegeben wird.


  • Administrator

    Belli schrieb:

    Dravere schrieb:

    War das so unverständlich?

    Der Quelltext ist etwas verwirrend, weil in der letzten Instruktion doch wieder ptest ausgegeben wird.

    😮
    lol
    Danke für den Hinweis. Hab es gleich editiert. Hab das doch tatsächlich bisher nicht gesehen ... *wir brauch ein Smilies, welches Peinlichkeit ausdrückt* 😉

    Grüssli



  • Dravere schrieb:

    Danke für den Hinweis.

    Keine Ursache.
    Fast noch befremdlicher fand ich das Folgeposting des Threaderstellers, der sich bedankt mit dem Hinweis, daß nun alles funktioniert ...


Anmelden zum Antworten