Teile aus char-array extrahieren



  • Hallo,

    ich habe den folgenden Char-Array

    char name[64];

    der das Folgende enthält:
    [::ffff:127.0.0.1]:21619

    Ich brauche es aber in der Form "127.0.0.1:21619", wobei sich die IP 127.0.0.1 ändern wird, und den Port 21619 auch.

    Wie kann ich das einfach in der gewünschten Form speichern?
    Ich habe mir gedacht, dass ich von rechts anfange, bis zum ersten Doppelpunkt den Port speichere und dann bis zum zweiten Doppelpunkt die IP.

    Geht das mit strtok?

    Für eine einfache Lösung wäre ich dankbar.

    viele Grüße,

    CP



  • Hallo

    Grundsätzlich geht das schon mit strtok, wobei es aber immer von links anfängt. Wenn in deinem Fall die Richtung von rechts optimaler ist, dann bleib lieber beim manuellen auslesen. Denn strtok macht intern auch nichts anders als chars in einer Schleife vergleichen.
    Mit std::string wäre noch die Methode find_last_of möglich.

    bis bald
    akari



  • Gibt vielleicht andere Vorschläge, wie man das elegant machen könnte?

    Hmmm, sowas vielleicht wie, wenn keine Dez-Zahl dann erase ?



  • Ist das statisch der Output? Also sind die Zeichen "[::ffff:" immer vorhanden (Anzahl)? Wenn ja, dann lies doch erst ab der Position des ":" bis zum letzten "]".
    Geht mit std::string wunderbar. Position des letzten "]" holen und dann ab Position 7 in einen anderen String kopieren. Den Port genauso rauskopieren (Position von "]" oder ":" bis size()" und dann zusammenfügen.
    rya.



  • besteht die Möglichkeit, regexp einzusetzen?



  • Hallo,

    Ist das statisch der Output? Also sind die Zeichen "[::ffff:" immer vorhanden (Anzahl)? Wenn ja, dann lies doch erst ab der Position des ":" bis zum letzten "]".
    Geht mit std::string wunderbar. Position des letzten "]" holen und dann ab Position 7 in einen anderen String kopieren. Den Port genauso rauskopieren (Position von "]" oder ":" bis size()" und dann zusammenfügen.
    rya.

    Ich habe es jetzt so gemacht, wie es Scorcher24 beschrieben hat.
    Wie man regexp verwendet, weiss ich ehrlich gesagt nicht.

    Viele Grüße,

    CP


Anmelden zum Antworten