String, String^ oder string?

Moin alle mit einander ich habe eine sehr dringende Frage.

Ich bin noch ein ziemlicher Anfänger wenn es um C++ geht vor allem in Windows-Forms Anwendungen.

Und zwar ist mir aufgefallen dass es die unterschiedlichsten Deklarationsmöglichkeiten für Strings gibt, z.B.: string oder String oder String^.

Mit dem „kleinen“ string kann ich ja umgehen, aber mit dem „String^“ leider nicht.

Das Problem jetzt, eine Textbox gibt ja soviel ich weis String^ zurück quasi
String^ Text = Textbox->Text; funktioniert.

ABER String^ Text = „Text“; oder String^ Text („Text“);
funktioniert nicht .

Kann mir vielleicht jemand von euch beschreiben:

  1. Wofür das ^ nach dem String steht.
  2. Ob und wie man String^ in string konvertieren kann
  3. Ob und wie man eine leere String^ Variable anlegen kann.

Wäre echt nett bitte Danke!

Howdy,

Und zwar ist mir aufgefallen dass es die unterschiedlichsten
Deklarationsmöglichkeiten für Strings gibt, z.B.: string oder

:String oder String^.

nein, die gibt es in plain C++ nicht, nur in den Erweiterungen, die Microschrott so auf den Markt wirft, siehe z.B. auch

http://en.wikipedia.org/wiki/Managed_Extensions_for_…

ABER String^ Text = „Text“; oder String^ Text („Text“);
funktioniert nicht .

dazu verwendet man gcnew, ala

String^ Text = gcnew String(„Text“);

  1. Wofür das ^ nach dem String steht.

managed pointer, das sind automatisch verwaltete Pointer. Diese werden automatisch freigegeben, wenn keine Referenz mehr auf sie existiert, weshalb es auch kein gcdelete gibt.

  1. Ob und wie man String^ in string konvertieren kann

Den Pointer kann man in der gewohnten Art mit * dereferenzieren.

  1. Ob und wie man eine leere String^ Variable anlegen kann.

siehe oben, oder falls du null meinen solltest, dann Text = nullptr;

Gruss
norsemanna

Ahhhh…

Dann ist alles schon viel klarer.

Mein Problem war nämlich, ich wollte den Text in der TextBox in einer Klasse abspeichern und dann die gesamte Klasse in eine externe Datei schreiben.

Aber wenn das jetzt geklärt ist, steht dem ja nichts mehr im Weg,
herzlichsten Dank!