Problem: CString zerteilen
-
Ich habe ein Programm, welches über' Netzwerk Daten überträgt. Diese Daten liegen in folgender Form vor:
TYP;d1;d2;...;dN;
TYP wird verwendet, damit das Programm entscheiden kann, was mit ankommenden Daten gemacht werden soll. d1 bis dN stellen dann die Datenelemente dar, das können Zahlen, Strings usw. sein.Nun habe ich folgenden Code:
CString incommingData(buffer); CString ctrMark = incommingData.Left(incommingData.Find(';')); incommingData = incommingData.Right(incommingData.Find(';'));In incommingData liegen die übertragenen Daten (vollständig, habe ich getestet). In ctrMark wird der TYP abgespaltet, das hat eigentlich auch funktioniert, ich bekomme den TYP korrekt ausgegeben. Die restlichen, eigentlichen Daten sollen dann einfach wieder in incommingData liegen und später weiterverabeitet werden.
Das funktioniert leider nicht so ganz:
1. Beispiel, hier funktioniert es: "LD_S;B;T;"
→ ctrMark = LD_S
→ incommingData = B;T;2. Beispiel, hier läuft es nicht: "LD_T;3;4;5;2;"
→ ctrMark = LD_T
→ incommingData = 5;2;
Es fehlen also die Daten in der Mitte des Strings!
-
MSDN schrieb:
CStringT Right(
int nCount
) constnCount
The number of characters to extract from this CStringT object.Wenn du den Rest von rechts mit der "linken Suche" willst, dann musst "Gesamtlänge - gefundenen Index - 1 machen"
einfacher wäre dann sicher folgendes:
incommingData.Delete(0,incommingData.Find(';') + 1);
-
OK, danke.