Nen String segmentieren und in ne list packen...



  • danke filmor... habs nu so grob verstanden 😉

    Wie krieg ich das denn hin, dass das auch für nen QString funzt? Muss ich da nen QString in nen std::basic_string umwandeln? wenn das denn überhaupt geht...kA, mit QT noch gar ned gearbeitet bisher...



  • QString hat ne Methode toStdString() die dir den QString in ein std::string umwandelt. 🙂

    BR evilissimo



  • Dankeschön... dann steht das Segmentieren ja soweit...

    jetzt stellt sich mir noch die Frage, wie ich das andersrum bewerkstellige... sprich... ich hab ne std::list<int> mit aneinandergereiten char... und die will ich jetzt wieder in nen String packen...

    Schleifentechnisch eigentlich ja auch recht einfach, man beginnt am Anfang der List, und geht sie durch in reiht die Char einfach in nen String ein...

    Nur wie ich das in c++ Sprache umsetze ist mir leider nicht ganz bekannt, wo ich wieder nach Hilfe eurerseits fragen würde...

    kann mir da wer von euch weiterhelfen? Also einmal muss ich die ints von der Liste durchgehn und da die Char rauslesen... und dann muss ich die liste durchgehen int für int...

    danke schonmal für eure hilfe..

    mfg
    Tommy



  • So wie ich das sehe, solltest du für sowas keine list sondern vector benutzen. Es sei denn du benutzt QList. QString hat mehrere Methoden, um an die Daten ranzukommen. Steht alles in der Dokumentation.



  • hmm... also erstmal sollen die Chr, die als integer aneinandergereit in der Liste hängen, in nen normalen string gepackt werden... und da das segmentieren in die list geschieht, wollt ich auch bei der list bleiben...

    std::list<int> res;
    int einzufuegen;
    std::string text;
    
    while(res!=empty){
    res.back()=einzufuegen;              //so hab ich schonmal das letzte element rausgeholt
    res.erase(res.end(),res.end());     //hiermit lösche ich das letzte teil, damit ich es nicht zweimal einfüge...
    text=einzufuegen+text;              //kann ich so die char-kette einfach vorne dran hängen und der erkennt das alles?
    
    }
    

    wäre es damit getan? oder hab ich wo nen denkfehler/syntaxfehler drin?



  • Du mußt die einzelnen Werte auch wieder in char* umwandeln, bevor du sie in den String einhängst.



  • hmm... und wie mach ich das? das mit dem anhängen vor den string mit dem + geht aber, oder? Kann mich nur an pascal erinnern, da hat sowas gefunzt mein ich...



  • Dazu mußt du das Zusammenfügen aus der Lesemethode wieder rückgängig machen:

    while(!res.empty()
    {
      int zahl=res.back();
      res.pop_back();
      basic_string<CharT> ins;
      //zerlege die Zahl in einzelne Bytes:
      for(int i=0;i<sizeof(int)/sizeof(CharT);++i)
      {
        ins.push_back(CharT(zahl));
        zahl>>=std::numeric_limits<CharT>::digits;
      }
      text=ins+text;
    }
    


  • besten dank!



  • Hi Leute!

    Also ich will euch dann das Endprodukt nicht vorenthalten... allein schon um zu wissen ob ich noch irgendwo formfehler oder denkfehler drin hab...
    Aufgabe war das ver- und entschlüsseln einer Nachricht... da wo ich mir nicht sicher bin habe ich mal Kommentare dran gemacht und die typedefs auf dem projekt hab ich auch mal dazu kopiert...

    Also wäre euch superdankbar wenn ihr euch das mal angucken würdet und Kritik übt, in welcher Hinsicht auch immer 😉

    dank euch schonmal... mfg
    Tommy

    code wird überarbeitet^^


Anmelden zum Antworten