InsanityX Geschrieben 7. September 2001 Geschrieben 7. September 2001 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 Zitieren
toosten Geschrieben 7. September 2001 Geschrieben 7. September 2001 CString string = "Hier ist der String."; char str[20]; strncpy(str, string.GetBuffer(0), string.GetLength()); str[string.GetLength()] ='\0'; Zitieren
Klotzkopp Geschrieben 7. September 2001 Geschrieben 7. September 2001 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. Zitieren
HighFly Geschrieben 11. September 2001 Geschrieben 11. September 2001 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 Zitieren
Klotzkopp Geschrieben 11. September 2001 Geschrieben 11. September 2001 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. Zitieren
Empfohlene Beiträge
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.