PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cstring einem char array zuweisen



ceekay
13.04.2006, 18:47
Hallo ich programmiere gerade ein Programm mit Visual C++

Ich möchte eine Zeichenkette die in einer Variablen vom Typ Cstring einem char [] zuweisen. Der Compiler nölt aber.

Zur Verdeutlichung

char sBuf[] = m_tosend;

m_tosend ist eine Variable vom Typ Cstring.

Compilermeldung:
error C2440: 'initializing' : 'class CString' kann nicht in 'char []' konvertiert werden

Gibt es eine Möglichkeit wie ich das realisieren kann?

Bin für jede Hilfe dankbar

PicNick
13.04.2006, 19:24
Du mußt mit getlength/getbuffer etc. die Daten rausfummeln. (Cstring Help)
so einfach "=" geht da nicht.

NumberFive
14.04.2006, 07:37
CString m_tosend;

char sBuf* = new char[m_tosend.GetLenth()+1];

strcpy(sBuf,m_tosend.operator LPCSTR());

jetzt steht dein CString im sBuff.

Ok in einer Uni Code an wendung geht es nicht.

Gruß

PS: Ist auf dem Kopf getipp also noch mal genau den syntax prüfen.

ceekay
14.04.2006, 12:01
Vielen Dank erstmal. Funktioniert super:
Aus einem anderen Forum hab ich die Lösung:

char sBuf[255];

_tcscpy(sBuf,m_tosend);

Also nochmal vielen Dank für die schnelle Hilfe

ogni42
14.04.2006, 13:34
Die Visual Studio Help ist Dein Freund. CString hat dafür eine Methode, die den Pointer auf das char Array zurück gibt. Dann kannst Du Dir in vielen Fällen das Kopieren sparen.

ceekay
14.04.2006, 20:29
Ich glaub dir gerne das ich sowas in der Hilfe finden würde. Für einen Anfänger ist es nicht immer ganz einfach das passende zu finden was man sucht.

skillii
14.04.2006, 22:02
Die Methode GetBuffer liefert dir sogar einen einen String (char*) den du verändern kannst!

NumberFive
17.04.2006, 07:15
GetBuffer ist mit vorsicht zu geniessen wie die anderen Funktion auch.
den Der CString hat ref Zaehler wegen dem frei geben und so.
Und der CString ist dann auch für "normale" Cstring funktionen gesperrt.

Wenn du GetBuffer nimmst muß du dem CString auch sagen wann du Fertig bist. die Funktion weiß ich aber jetzt gerade nicht im Kopf.

Die optimale Funktion findet man wohl nur wenn genau weiß was andere machen will und sein Stil ein bissle kennt.

Klar steht viel in der Hilfe aber ich finde machmal einfach zu viel.

Gruß

skillii
17.04.2006, 10:20
Genau!

Mit "CString::ReleaseBuffer" sagst du dem CString, dass du fertig bist.

mfg