string in Teilstrings aufschlüsseln



  • Hallo, ich habe folgenden String in einem Edit_Fenster und will den String wie folgt aufsplitten:

    Original:
    24566772866918662126623;909

    Output 1:
    909
    Also den String hinter dem Semikolon

    Danach:

    Output 2:
    245
    7728
    918
    212
    23
    Also 66 als Trennzeichen der einzelnen Strings.

    Wie kann ich das realisieren. Kenn den Befehl fürs Aufsplitten von strings leider nicht...

    Vielen Dank
    Viele Grüße
    Majo



  • Vielleicht hilft dir strchr bzw. strrchr weiter 🙄



  • hmm, dass hatte ich in der MSDN auch schon gefunden und angewendet.

    Es liefert mir allerdings nur zurück, ab welcher Position dieses gesuchte Zeichen das erstemal anfängt.
    Wie bekomm ich denn den String von VOR dem Trennzeichen und NACH dem Trennzeichen da raus?
    Den Teil nach dem Trennzeichen benötige ich, um nach weiteren Trennzeichen zu suchen... .

    Vielen Dank
    Majo





  • hi,

    jep, habe ich eben auch grad gefunden und probiert.. funktioniert 🙂

    VIELEN DANK



  • hallo,

    leider gehts doch nciht so wie ich will
    strtok durchsucht nur nach einem char und nicht nach mehreren

    beispiel
    Trennzeichen ="67"
    so durchsucht er nach 6 und separat nach 7 und nciht als 67 als ganzes...

    leider weiss ich noch immer nciht, wie ich einen string aufplitten kann...

    HILFE!!!



  • strstr



  • In der Zwischenzeit hättest du etwas derartiges schon längst selbst schreiben können. Ist ne Sache von Minuten ... und würdest dann vermutlich auch nicht die Unicode-Unterstützung verlieren, wie es bei strstr der Fall ist.
    🙄



  • wenn ich folgendes mache
    pdest = strstr( string, str );
    result = pdest - string + 1;

    erfahre ich ja die startposition des gesuchten trennstrings.
    z.B. "4"

    wie kann ich aus dem string jetzt aber die zeichen 1-3 anzeigen lassen?



  • Entweder du kopierst dir das Ganze in einen neuen String (z.B. lstrcpyn), oder du setzt einfach an der von strstr zurückgelieferten Fundstelle ein Nul-Zeichen (terminierst also dort den String) - dann pdest um eins erhöhen (damit bekommst du den Rest-String) und den Vorgang wiederholen.

    So ungefähr stelle ich mir das vor 🤡



  • hab die Lösung gefunden, und jetzt leider für mir projektspezifisch heir gepostet.
    hab veruscht etwas anzupassen.

    Waäre das was für die FAQs? Thema kommt bestimmt öfters

    [/
    //string1=zu durchsuchender String; trennstring=trennstring;
    pdest = strstr( string1, trennstring );
    //iergeb=an welcher stelle fängt der trennstring an? 
    iergeb = pdest - sKryptAll +1 ;
    //kopieren des strings BIS zum Trennstring nach sergeb;
    lstrcpyn(sergeb, sKryptAll, iergeb) ;
    //gefundener Teilstring nach sergeb2 kopieren
    strcpy(sergeb2,sergeb);
    //gefundener Teilstring in Edit-Fenster anzeigen
    SetWindowText (hwndEdit, sergeb2);
    //alle Positionen (gefundener Teilstring) einschl. trennstring mit Lerrzeichen 
    //überschreiben
    _strnset( sKryptAll, '\ ', iergeb +len +1 );
    //das ganze wiederholen
         while (pdest != NULL) {
                pdest = strstr( sKryptAll, sBase );
                iergeb = pdest - sKryptAll +1 ;
                lstrcpyn(sergeb, sKryptAll, iergeb) ;
                strcat(sergeb2,sergeb);
                SetWindowText (hwndEdit, sergeb2);
                _strnset( sKryptAll, '\ ', iergeb +len +1);
                                 }
    //Leerzeichen wieder Raustrennen mit "strtok"
    //sergeb2=gefundene Teilstrings mit Leerzeichen; seps= "" ,\t\n";
            token = strtok( sergeb2, seps );
    
                      while( token != NULL )   {
    //Projektspezifisch von mir
                             token2 = atoi(token);
                             c = token2 - 193 + 2 - (193 * 12);
                             int result;
                             result = "3";
                             if (result == c) {
                               strcat (sergeb3, "a");}
                             if (result +1 == c) {
                               strcat (sergeb3, "b");}
                               token = strtok( NULL, seps );
    
                                   }
    //alles in Edit-Fenster anzeigen
                 SetWindowText (hwndEdit, sergeb3);
    
                    }
    


  • Majo schrieb:

    Waäre das was für die FAQs? Thema kommt bestimmt öfters

    Weiß nicht - eigentlich ist mir das hier noch kaum begegnet 🙄
    Außerdem hat es eigentlich nichts direkt mit WinAPI zu tun - eher C / C++ 😉


Anmelden zum Antworten