Strings in C++

Hallo Ihr,

ich habe da mal eine einfache Frage. Wenn ich eine Variable char *Test vereinbart habe kann ich ihr mittels Test = „Hallo!“; einen String zuweisen. Dieses „Hallo!“, stellt das einen Ansi-String dar? Wenn ja, warum funktioniert dann (im C++Builder) Test = Edit1.Text; nicht? Ist der Text vom Edit-Feld kein Ansi-String? Ich muss doch gar nichts machen wenn ich z.B. Edit1.Text = „Hallo!“; machen will. Bedeutet das, dass sich die Zuweisung eines C-Strings und eines Ansi-Strings nicht unterscheidet?

Danke für Antworten, ich kapier das irgendwie nicht. Der Unterschied vom C-String und vom Strig ist mir eigentlick klar.

Gruss Morph

Hallo,

hinter char *Test; verbirgt sich ein Pointer auf ein char hinter dem sich im Speicher beliebig viel verbergen kann bis zu einem Abschlusszeichen \0.

Edit1.Text muss nicht unbedingt einen char-Buffer zurueckliefern, sondern kann auch wie z.B. bei MFC ein CString-Objekt liefern, was etwas anderes als ein C-String im Sinne von ANSI C ist. Wenn dem so ist, dann musst Dir erstmal den Buffer des Objektes holen, in dem der eigentliche Wert der Zeichenkette gespeichert ist. Also z.B. ueber Edit1.Text.GetData(); und auch pruefen ob da nicht ein UNICODE- oder MBCS-String geliefert wird.

Bei der Zuweisung ueber char *Text = „hallo!“; muss das = auch als Operator verstanden werden. Also z.B.:

Text.operator=(„Hallo!“);

wobei der zweite Parameter (wenn global) als Parameter vom Type char* verstanden werden muss, aber vorsicht, es wird dann die Adresse kopiert und nicht das ganze Objekt. Das ist eine Sache des Assignment-Operators bzw. Copy-Konstruktor, die gleich implementiert sein sollten.

CIAO