Einen Array aus einem String hohlen



  • Hi, gibts sowas ähnliches wie der Befehl explode in PHP nur für C++?
    Also explode splintet den String nach dem ersten parameter in einen Array auf. Also explode(";","1;2") würde mir halt die zwei zahlen da in nen Array packen. Ich hab noch nie in C++ mit arrays gearbeitet muss ich gestehen, desswegen hab ich auch keine Ahnung was das betrifft.
    Meine Alternative währe natürtlich LastDelimiter und SubString. Aber das will irgendwie auchnicht so richtig.

    AnsiString Taetigkeiten="test;test;test";
    while (Taetigkeiten.Pos(";"))
    {
      iPos = Taetigkeiten.LastDelimiter(";");
      Taetigkeiten = Taetigkeiten.SubString(1, iPos - 1);
      ShowMessage(Taetigkeiten.SubString(iPos + 1,Taetigkeiten.Length() - iPos));
      TaetigkeitenCheckListBox->Items->Add(Taetigkeiten.SubString(iPos + 1,Taetigkeiten.Length() - iPos));
    }
    

    Wat isn daran falsch?



  • Naja. Du holst dir erst die Position des letzten ";". Dann "loeschst" du alles nach diesem. Dann gibst du einen Teilstring aus, der nicht existiert, weil alles nach "iPos" "geloescht" wurde.
    Ich denke, es muesste eher so aussehen:

    AnsiString Taetigkeiten="test;test;test";
    	while( Taetigkeiten.Pos( ";" ) > 0 )
    	{
    		int iPos = Taetigkeiten.LastDelimiter( ";" );
    		AnsiString Teil = Taetigkeiten.SubString( iPos+1, Taetigkeiten.Length() - iPos + 1 );
    		ShowMessage( Teil );
    		TaetigkeitenCheckListBox->Items->Add( Teil );
    		Taetigkeiten.Delete( iPos, Taetigkeiten.Length() - iPos + 1 );
    	}
    

    MfG Aoeke



  • Alles Klar, danke. War noch ein Kleiner Fehler drinne, er hat nur die 2 letzten Strings angezeigt musste hinter der while-schleife das nochmal adden. 🙂


Anmelden zum Antworten