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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...