Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

ich habe zZ ein Problem, an dem ich mir die Zähne ausbeiße. Ich habe einen CStringArray und möchte die CStrings die da drin stehen in einen Char umwandeln. Da ich dies an mehreren Stellen im Programm muss, würde ich mich freuen, wenn mir jemand mit ner Funktion helfen könnte, der ich den CString übergebe also etwa so:

 

CString String = CStringArray.GetAt(i)

char Convert = StringConvert(String) 

und dann krieg ich den Char zurück

thx B

Geschrieben

Du kannst einen CString nicht in einen char umwandeln, weil ein char nur ein Zeichen fasst. Falls Du einen char* meinst, dann kommt es darauf an, ob Du den String nur lesen oder auch ändern willst.

Wenn Du nur lesen willst, dann kannst Du einfach den CString anstelle des char* einsetzen. Die Klasse CString hat einen cast-operator für LPCTSTR, das funktioniert dann automatisch.

Falls Du den String ändern musst, dann ist toostens Weg der richtige. Allerdings solltest Du den Speicher dynamisch holen, wenn Du nicht vorher weisst, wie lang der String ist:


CString strDeinCString = "...";
char* pszString = new char[ strDeinCString.GetLength() + 1 ];
if( !pszString ) {
... // Fehlerbehandlung
}
strcpy( pszString, strDeinCString );
[/code] Das letzte Zeichen musst Du nicht auf 0 setzen, dass macht strcpy für Dich. Allerdings musst Du, nachdem Du ihn nicht mehr brauchst, den String mit
[code]
delete pszString;

wieder freigeben.

Geschrieben

hi,

will nur was lernen.....

-----------------------

du hast gesagt

delete blabla

soll das nicht heißen:

delete []blabla

? und warum?

danke im Voraus für ne nette Antwort.

HighFliegender

Geschrieben

Du hast Recht. Wenn man einen Array mit new[] holt, dann sollte man ihn auch mit delete[] freigeben.

In diesem Fall funktioniert es aber trotzdem.

Der Unterschied zwischen delete und delete[] besteht bei Arrays darin, dass delete nur den Destruktor des ersten Elements aufruft, während delete[] den Destruktor für jedes Element des Arrays aufruft.

Bei Array-Elementen, die wie in diesem Fall keinen Destruktor haben oder brauchen, macht es keinen Unterschied.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...