Bereiche eines Strings auslesen? (Wörter)
-
Das geht mit CString viel einfacher.
Devil
-
Original erstellt von devil81:
**Das geht mit CString viel einfacher.Devil**
und Wie???????????????????
-
Hallo,
also ich würde des so machen:
CString komischerStringvondemServer=blablabla...
if(komischerStringvondemServer.Find("1002")!=-1) {
int a=komischerStringvondemServer.Find("\"");
int b=komischerStringvondemServer.Lenght(); <- oder so ähnlich
CString message=komischerStringvondemServer.substring(a,b); <- oder so ähnlich}
und dann hast du des was du wolltest, oder?
Bye!
Stefan
-
mhh, die lösung ist nicht schlecht, aber ich will die Wörter "richtig" auslesen, damit ich weiß wie ein bestimmter chatter heißt.
Für 'Perner sagt:' z.B
PS: @ Devil:
Wie geht denn deine CString lösung? Daran wäre ich interessiert.[ Dieser Beitrag wurde am 26.11.2002 um 19:43 Uhr von Perner editiert. ]
-
Das Problem ist das du ein Trennzeichen brauchst.
in dem Fall ' ' also Leerzeichen, funzt solange jemand kein Leerzeichen im Namen
hat, es sei denn man könnte das nächste element nach dem namen identifizieren,
z.B. wenn dort immer ein " steht.Devil
-
Es ist im Battle.net nicht möglich einen Account mit Leerzeichen zu Registrieren, das dürfte also kein Problem sein
' ' ist nun also unser Trennzeichen.
-
Die frage ist jetzt nur noch, wie ich jetzt nach den Wörtern suche.
(Mit CString, das mit dem Char* Kapier ich nicht)
-
Hi Perner,
ich hoffe, der folgende Code hilft dir weiter:CString sEmpfangen; // Der String, den du von Battle Net bekommst sEmpfangen = "1002 TALK Perner 0000 \"hallo\""; // Dein Empfangsbeispiel CString sUsername,sNachricht,sNachrichtenart; // erklärt sich ja von selbst int iPosition = sEmpfangen.Find(' '); // iPosition enthält die Postition des ersten Leerzeichens int Nachrichtenart = atoi(sEmpfangen.Left(iPosition)); // Nachrichtenart enthält 1002 int iPositionNeu = sEmpfangen.Find(' ',iPosition+1); // sucht ab Position nach Leerzeichen sNachrichtenart = sEmpfangen.Mid(iPosition+1,iPositionNeu - iPosition); // sNachrichtenart ist TALK iPosition = iPositionNeu; iPositionNeu = sEmpfangen.Find(' ',iPosition+1); // ist ja inzwischen klar sUsername = sEmpfangen.Mid(iPosition,iPositionNeu - iPosition); iPosition = iPositionNeu; iPositionNeu = sEmpfangen.Find(' ',iPosition+1); sNachricht = sEmpfangen.Right(sEmpfangen.GetLength() - 1 - iPositionNeu); m_ctlChatfenster.AddString(sUsername+" sagt: "+sNachricht); UpdateData(FALSE);
Mfg, TakeItEasy
-
JUHU!!!! ES KLAPPT :DDDDDDDDDDD
DANKE DANKE UND NOCHMALS DANKE!
DAS BEDEUTET MIR SEHR VIEL :DDDDDDDDDDDDDDDDD
-
@takeiteasy
Also noch länger gings ja fast net mehr!CString sEmpfangen; // Der String, den du von Battle Net bekommst sEmpfangen = "1002 TALK Perner 0000 \"hallo\""; // Dein Empfangsbeispiel char szUserName[100], szNachricht[100], sNachrichtenArt[100]; int NachrichtenArt, unused; sscanf( sEmpfangen, "%d %s %s %d %s", &NachrichtenArt, szNachrichtenArt, szUserName, &unused, szNachricht); sUsername = szUserName; sNachricht = szNachricht; sNachrichtenart = szNachrichtenArt;
Nachtrag:
Man kann sich die Stringbuffer auch gleich mit GetBufferSetLength aus den CStrings holen[ Dieser Beitrag wurde am 27.11.2002 um 08:26 Uhr von RenéG editiert. ]
-
@RenéG
Das ist natürlich besser, aber den Befehl "sscanf" kannte ich nicht.
Man lernt ja nie aus.mfg, takeiteasy