CString auslesen
-
HI LEute
Ich habe einen Cstring in dem mehrer Wörter drinnen stehen die duch Leerzeichen getrennt sind.
Frage: Wie kann ich die Wörter am besten einzeln Auslesen???
mfg Florian
-
das geht mit strtok
CString sString = "Lies mich aus"; char *token; char szStep[2] = " ";//gesuchte abschnitte Geht auch " ;-." usw... char szSearch[5] = "mich"; token = strtok( sString.GetBuffer(sString.GetLength()), szStep ); //Einzelner Abschnitt zwischen gesuchtem while( token != NULL ) //Durchlaufe Schleife solange was gefunden wird { if(strstr( token, szSearch ) != NULL) //Ist im Abschnitt das gesuchte vorhanden MessageBox(token); token = strtok( NULL, szStep ); //hol dir den nächsten abschitt } delete token;
LowFly
-
Da ginge z.B. so:
--
int pos1 = [Stringname].Find(" ",startpos);
int pos2 = [Stringname].Find(" ",pos1);
int iLaenge=pos2-pos1;CString ausgabe = [Stringname].Mid(pos1 ,iLaenge);
startpos=pos2;--
Jetzt durchläufst du den String mit einer Schleife und fertig.
Schönen Abend,Michael
-
ähm der code wird so nie was finden
int pos1 = [Stringname].Find(" ",startpos);
int pos2 = [Stringname].Find(" ",pos1);
int iLaenge=pos2-pos1;CString ausgabe = [Stringname].Mid(pos1 ,iLaenge);
startpos=pos2;da
int pos2 = [Stringname].Find(" ",pos1);
das selbe zurückgibt wie
int pos1 = [Stringname].Find(" ",startpos);
bzw ist startpos das gleiche wie pos1 & pos2das ist ne enlosschleife die du da produziert hast.
-
In einem Programm von mir läuft es so. Die Positionen sind nicht idetisch, da der 2. Find ja erst ab der Position startet, wo der letzte geendet hat.
-
In einem Programm von mir läuft es so
dann test mal das was ich nach deiner beschreibung erstellt hab. einfach den code in dein Programm Kopieren, würde ich die schleife nicht mit sString.GetLength() beenden würde die schleife morgen noch laufen
CString sString = "Lies mich aus";
int startpos = 0;
for(int nloop = 0; nloop<=sString.GetLength();nloop++)
{
int pos1 = sString.Find(" ",startpos);
int pos2 = sString.Find(" ",pos1);
int iLaenge=pos2-pos1;CString ausgabe = sString.Mid(pos1 ,iLaenge);
startpos=pos2;
MessageBox(ausgabe);CString f;
f.Format("%i",startpos);
MessageBox(f);
}der fehler ist das der code int pos2 = sString.Find(" ",pos1); auf der Position wo er den space " " gefunden hat wieder sucht und genau dort wieder was findet, endlos somit.
+1
-
Sag doch gleich, dass ich das +=1 beim übertragen vergessen habe
Danke für den Hinweis!