variabler Teilstring aus einem String

Lulu999

Grünschnabel
Hallo zusammen,
entschuldigt wenn ich mich in den folgenden Zeilen vielleicht nicht immer fachgerecht ausdrücke, ich bin noch nicht lange in der Materie drin.

Also mein String entsteht dadurch, dass ich per stream die Spalten einer csv.Datei auslese.In der CSV Datei werden die Spalten durch " ; " getrennt.
Hier ein Beispiel:

86;20.03.09;Mustermann,Max
123;12.06.09;Musterfrau,Beate


Der Teilstring soll das Datum zwischen dem ersten und dem zweiten Simikolon sein.
Das Problem ist, dass die Zeichen vor der ersten Zahl des Datums immer verschieden viele sind.
Jetzt brauch ich Hilfe,kann mir jemand sagen wie ich das Datum als Teilstring auslese und einen eigenen String daraus bilde.

schonmal Danke für jede Hilfe:)
 
In Java gibts methoden dafuer wie split oder indexOf, google ma das gibts sicher auch fuer C++ (Bin zu lange net mehr in C++ sonst koennt ichs dir bestimmt sagen ^^)

Wie liest du es denn jetzt aus? ich wuerd einfach schauen welchen index das erste und zweite simikolon hat und dann den String aufteilen nach dem ersten udn 2. simikolon.
 
Moin,

entweder so, wie MiMi schon sagte, oder Du durchläufst in einer Schleife Deinen String bis zum ersten ';' und liest dann alle folgenden Zeichen bis zum zweiten ';' aus!

Es gibt div. string-methoden, die Dir vielleicht auch weiterhelfen können - schau mal in Diene Hilfe!
Gruß
Klaus
 
Japp wenns bei C++ keine methode wie indexOf gibt, ware die Schleife wohl die naechste Moeglichkeit. Besteht die Methode natuerlich kannst du dir die Schleife sparen :D
 
Moin,

es gibt bspw. die Methoden "strpbrk" und "strrchr", die jeweils das erste und letzte Vorkommen von Zeichen ermitteln können. Allerdings wird dabei jedesmal ein Pointer auf das erste/letzte Vorkommen des Zeichens im String zurückgegeben!

Gruß
Klaus
 
Den Vorschlag von deepthroat finde ich ganz interessant.
Danke für den Quelltext...aber könntest Du mir bitte die Zeile 3 erklären.
Die Befehle habe ich im Internet gesucht aber so eine richtige antwort habe ich nicht gefunden.

schonmal danke:-)
 
Den Vorschlag von deepthroat finde ich ganz interessant.
Danke für den Quelltext...aber könntest Du mir bitte die Zeile 3 erklären.
Die Befehle habe ich im Internet gesucht aber so eine richtige antwort habe ich nicht gefunden.
Die Zeile ist lediglich dazu da den Text bis zum nächsten Semikolon und das Semikolon selbst zu ignorieren (siehe http://www.cplusplus.com/reference/iostream/istream/ignore/).

Dabei muß man die Anzahl der max. zu ignorierenden Zeichen angeben. Da man nicht weiß wieviel Zeichen dort stehen bis dann mal ein Semikolon kommt, ist es evtl. eine gute Idee soviele Zeichen wie möglich zu ignorieren. (Man könnte jetzt natürlich auch davon ausgehen das dort niemals mehr als, sagen wir mal, 200 Zeichen stehen bis ein Semikolon kommt und dort eine 200 reinschreiben... Ist aber keine gute Idee falls dann doch mal mehr als 200 Zeichen drinstehen - better safe than sorry)

Um den größten möglichen Wert eines Typs (in diesem Fall von std::streamsize) zu ermitteln, kann man die numeric_limits Klasse benutzen (siehe http://www.cplusplus.com/reference/std/limits/numeric_limits/).

Gruß
 
Zurück