String zerlegen wie geht es?



  • Hallo, gibt es eigentlich in C++ keine Funktion, die einen String ála "wert1,wert2,wert3,wert4" in einem Array zerlegt, in dem es nach dem Komma sucht?

    in PHP heißt es z.B. explode() in VisualBasic split.

    oder muss ich mit einer do while schleife den String duchlaufen und nach dem zeichen suchen und dann neu abspeichern sowie:

    do{
    
                x++;
                datei=datei+zeile[x];
    
      }while(!(zeile[x]==' '));
    

    ich suche mich schon dumm und dämlich der BCB Hilfe...



  • Wenn die Werte wirklich durch ein Komma (oder ein Leerzeichen) getrennt sind, dann gibt es beim BCB eine ganz poplige Lösung dafür. Werf 'mal einen Blick auf TStringList und dort auf die Eigenschaft 'CommaText' 😉



  • wenn ich das so nun mache klappt das wohl nicht ganz:

    TStringList *werte = new TStringList;
    
       werte->Add(Informationen);
       werte->CommaText;
    
      Memo1->Lines->AddStrings(werte);
    

    in Information (AnsiString) steht nun z.B."wert1,wert2" drin.

    wenn ich das im MemoFeld ausgebe, steh das aber immer noch in einer reihe mit Komma. Auch DelimitedText geht nicht...



  • Da geb' ich dir doch gnadenlos Recht - so funktioniert's nicht. Die Sache ist viel einfacher.

    Memo1->Lines->CommaText = Informationen;
    


  • #include <stdio.h>
    #include <string.h>
    
    int main ()
    {
      char str[] ="Wert1,wert2.";
      char * pch;
    
      pch = strtok (str," ");
      while (pch != NULL)
      {
        printf ("%s\n",pch);
        pch = strtok (NULL, " ,.");
      }
      return 0;
    }
    


  • und wieder ...
    Schon mal die Suche probiert ?

    String werte="wert1,wert2,wert3,wert4";
    TStringList *liste=new TStringList();
    liste->Delimiter = ',';
    liste->DelimitedText = werte;
    Edit1->Text = liste->Strings [2];
    delete liste;
    


  • jaja ist ja schon gut, die antworten von Killing my softly hatten völlig gereicht. außerdem ist deins (xyz) das geleiche wie von Killing my softly, hättest es dir auch sparen können 😃 trotzdem danke



  • ThorstenSteinberg schrieb:

    jaja ist ja schon gut, die antworten von Killing my softly hatten völlig gereicht. außerdem ist deins (xyz) das geleiche wie von Killing my softly, hättest es dir auch sparen können 😃 trotzdem danke

    nicht ganz, da die Lösung von xyz_ nicht nur für Kommas funktioniert, sondern auch Semikolon, Leerzeichen u.a.



  • Sofern man den BCB6 hat. Erst ab den gibt es das.


Anmelden zum Antworten