Adresse von String
-
wie kann ich die Adresse von string heraus bekommen.
std::string test = "Hallo"; const char* ptest = test.c_str(); cout << *ptest; // so bekomme ich nur eine Buchstabe 'H' cout << &ptest; // die adresse von ptestaber wie komme ich an die addy von test.c_str()?
-
Vielleicht
cout << &test.c_str();
-
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
chars ausgeben willst, musst du zuerst zu einem anderen Zeiger casten, dachar-Zeiger als C-Strings interpretiert werden:std::cout << static_cast<void*>(CharPtr) << std::endl;
-
Eh, WIE BITTE?
Inptestist 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::ostreamfürchar*so überladen ist, dass er es als C-String interpretiert. Fürvoid*hingegen wird die gespeicherte Adresse hexadezimal ausgegeben.
-
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.
-
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 ...