[C++] String anhand von Leerzeichen teilen.

  • Ich bin grade völlig am verzweifeln ...

    Kurz zum Aufbau.
    Ich habe einen String.

    Das ganze ist ein String, der mit Leerzeichen hintereinander steht.

    Nun versuche ich mit einem Schleifendurchlauf die Werte von jedem Stein auszulesen und zu verwenden.

    Code
    for(short i = 0; i < string[0] -'0'; i ++) { /* ... */ }

    Meine Frage ist nun, wie ich jeweils die Werte des Steines herausbekommen kann.
    Mit Positionen im String ist es nicht möglich, da die Positionen der Steine sowohl 1- als auch 2-stellig sein können.
    Also habe ich es mit strtok() versucht ...
    Nur will diese Funktion einen char * str haben.

    Bestimmt gibt es eine Möglichkeit, wie ich so einen Typ auf meinen String legen kann, aber ich bin in C++ immernoch nicht so bewandert.
    Hat da jemand einen kleinen Tipp, oder einen Vorschlag, wie man es anders lösen könnte?

  • Dürfte halbwegs gehen.

    Viele liebe Grüße
    The User

    Edit: mit kleiner Änderung klappts jetz! ;)

  • Öhm, ja ok, ich kam, ich sah, ich scheiterte am verstehen O.o
    Zuersteinmal: Ich hab noch keinen blassen schimmer von Vektoren, aber ich bin lernfreudig =)

    Also, wie rufe ich das genau auf?
    Ich verstehe dass jetzt so, dass zuerst bis zu Zeichen gesucht wird, dass zurückgegeben werden soll. Alle Zeichen bis dahin werden in temp gespeichert.
    Wenn das Trennzeichen gefunden wurde wird die Temp Variable geleert und der bisherige Fund zurückgegeben.

    Aber wie erhalte ich dann noch die anderen Trennungen?
    Ich brauche ja praktisch alle Werte ...

    Post Scriptum: Vielen Dank schonmal !!

  • Du kannst auf Vektorenelemente (bzw. auch bei allen anderen sequenziellen Containern (list, deque)) mit dem Indexoperator genauso wie bei arrays arbeiten, also mit
    meinvektor[12] = "hallo";
    Geht auch mit Iteratoren, das ist aber nur kompliziert und ic werde da immer Wahnsinnig! :D
    Bei der Deklaration gibst du in den <>-Klammern den Typ der Elemente an. (der kann auch wiederum Vektor oder array sein)
    Dann musst du natürlich #include <vector> angeben, damit überhaupt was läuft.
    Mit .push_back() kannst du dem Vektor ein Element dranhängen(mit pop_back() gehts wieder weg).
    Bei list und deque gehen noch einige Sachen mehr, aber hier reicht das ja mit einem Vektor.
    Man findet noch so einige Sachen: .size könnte ganz praktisch sein.
    Es ist für dich damit einfach einfacher, so ein Feld im Aufbau zu verändern.
    Bei deque und list kannst du dann sogar Element mittendrin und ganz vorne löschen oder einfügen!
    Bei arrays geht das halt nicht, außer über Schleife und dann kopieren! :lol:

    Viele liebe Grüße
    The User

    Edit:
    In PHP ist das push_back array_push, da ist das halt in die normalen arrays mehr oder minder integriert, versteh PHP wer will! ;)