char* to wxString

Kaiser206

Erfahrenes Mitglied
Hallo,
ich will eine char* variable in einen wxString schreiben.

Code:
char* a = "abcdefg";

wxString str = _T("abcdefg");  //funktioniert
str = _T(a);  //funktioniert nicht

kann mir da jemand weiterhelfen?

mfg
Kaiser206
 
ICh denke das problem bei deinem beispiel ist, dass du keinem zeiger einen string zuweisen kannst, also mach statt
C++:
char *a = "asdhj";
C++:
char a[10] = {"asdhj"};
 
Zuletzt bearbeitet von einem Moderator:
ICh denke das problem bei deinem beispiel ist, dass du keinem zeiger einen string zuweisen kannst
Sorry, aber das ist Unsinn. Ein Array ist nichts anderes als ein Zeiger. Ein String in C ist nichts anderes als ein Array von char - und deswegen darf man die Zuweisung genauso vornehmen. Da String-Literale in C allerdings nicht änderbar sind, darf man nicht versuchen durch den Zeiger den Wert des Strings zu modifizieren.

Gruß

PS: Warum probierst du sowas denn nicht aus, bevor du solche Sachen behauptest?
 
Zuletzt bearbeitet:
Das ein array und ein zeier mehr oder weniger das selbe sind is mir klar, man kann auch einen zeiger auf ein array setzen und dann fast wie dieses behandeln, aber ich habe bis jetzt die Erfahrung gemacht, dass wenn man, z.B. ein sprintf auf einen zeiger versucht, das gründlich schief geht, da kein speicher reserviert ist. Ein zeiger enthällt ja nur eine Speicheradresse und wenn dann versucht wird bei der deklarierung wo kein speicherplatz eines arrays vorhjanden ist, dem zeiger einen streing zuzu weisen, dann knallts, zuindest bei mir (ich benutze den g++/gcc).

gruß cracker 1991
 
Hi.
Das ein array und ein zeier mehr oder weniger das selbe sind is mir klar, man kann auch einen zeiger auf ein array setzen und dann fast wie dieses behandeln, aber ich habe bis jetzt die Erfahrung gemacht, dass wenn man, z.B. ein sprintf auf einen zeiger versucht, das gründlich schief geht, da kein speicher reserviert ist. Ein zeiger enthällt ja nur eine Speicheradresse und wenn dann versucht wird bei der deklarierung wo kein speicherplatz eines arrays vorhjanden ist, dem zeiger einen streing zuzu weisen, dann knallts, zuindest bei mir (ich benutze den g++/gcc).
Das ist kein Argument. Das hat nämlich mit dem vorigen Sachverhalt überhaupt nichts zu tun.

Es ging doch nicht darum einen unitialisierten Zeiger zu verwenden. Der Zeiger wurde ja gerade mit dem String-Literal (resp. der Adresse des ersten Zeichens der Stringdaten) initialisiert.

Gruß
 
Also für mich sieht das nach einer deklaration aus:
char* a = "abcdefg";
Und?! Was willst du damit sagen?

Du hattest doch behauptet das man einen Zeiger nicht mit einem String-Literal initialisieren (oder zuweisen) kann. Als ich bemerkte, dass es selbstverständlich möglich ist, erzählst du etwas von Problemen mit uninitialisierten Zeigern -- also einem ganz anderen Sachverhalt.
Ach ja, könntest du mir erklären, was du hiermit meinst :
String-Literal (resp. der Adresse des ersten Zeichens der Stringdaten)
?
Was soll ich denn da erklären? Weißt du nicht was ein String-Literal ist?

Gruß
 
ganz genau das :-(
Aha. Ein Literal ist allgemein (auf Programmiersprachen bezogen) ein Ausdruck der vom Compiler so wie angegeben (literal = wortwörtlich) verarbeitet wird; im Gegensatz zu Variablen (deren Wert erst ermittelt werden muss) und Funktionsaufrufen (deren Ergebnis erst berechnet werden muss).

Ein String-Literal ist ein durch doppelte Anführungszeichen eingeschlossene Ansammlung von 0 bis n Zeichen.

Beispiele:
C:
L'x'     // ein wchar Zeichen-Literal
.4e-10f  // ein float Gleitkomma-Literal
5L       // ein long Ganzzahl-Literal
Gruß
 
Zurück