[C++] Text aus einem .csv File auslesen

Hayes

Mitglied
Hallo zusammen

Ich bin ein absoluter Anfänger was C++ anbelangt, darum frag ich einfach mal hier :)
Und zwar habe ich folgendes .csv File :

Code:
Nature;;;;;;;;;;Challenges;;;;;;;;;;;;;;;;;;;;;;;;Partnership;;;;;;;;
Vertical.P;Vertical.N;Vertical.F;Horiz.P;Horiz.N;Horiz.F;Horiz.P;Intern.P;Intern.N;Intern.F;Perf[1].Val;Perf[...].Val;Perf[...].Val;Perf[...].Val;Perf[...].Val;Perf[6].Nam;Perf[6].Val;Shift[1].Val;Shift[...].Val;Shift[...].Val;Shift[...].Val;Shift[...].Val;Shift[...].Val;Shift[7].Nam;Shift[7].Val;Vol[1].Val;Vol[...].Val;Vol[...].Val;Vol[...].Val;Vol[...].Val;Vol[...].Val;Vol[...].Val;Vol[8].Nam;Vol[8].Val;OT[1].Kan;OT[1].Exp;OT[1].Max;Cmpl[2].Kan;Cmpl[2].Exp;Cmpl[2].Max;Q[1].Kan;Q[1].Exp;Q[1].Max
%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%s;%d;%d;%d;%d;%d;%d;%d;%s;%d;%d;%d;%d;%d;%d;%d;%d;%s;%d;%s;%d;%d;%s;%d;%d;%s;%d;%d

Aus diesem, muss ich nun die Daten (hier mit %d gekennzeichnet) auslesen, dabei soll jede Spalte (abgetrennt durch ; ) in eine andere Variable gespeichert werden, wobei der Name der Variable jeweils dem der jeweiligen Spalte in der 2. Zeile entsprechen soll (z.B. Vertical.P , Vertical.N usw.)

Hoffe ihr könnt mir da weiterhelfen :)

MfG
Hayes
 
Das wird nicht gehen, da in C++ die Variablennamen zu Designzeit feststehen müssen und uzur Laufzeit nicht geändert werden können. Das lieg daran, daß die Variablennamen eigentlich nur Platzhalter für die entsprechenden Speicheradressen und im eigentlichen Programm (der .exe-Datei) nicht mehr vorhanden sind (außer in Debug-Informationen).
Am einfachsten wäre es, die Daten zeilenweise auszulesen, die Werte aus den Zeilen zu extrahieren und in ein Array zu speichern, für jede Wertezeile eines. Die Zeile mit den Überschriften liest du in ein extra Array ein.
Besser als ein Array wäre natürlich die Verwendung der Klasse vector.

P.S.: Mit Perl wäre das ganz einfach zu machen :)
 
Ein assoziatives Array mit map aus der STL würde sehr gut funktionieren!

Zum Aufteilen der Zeilen benutzt du einfach eine String-Split-Funktion.
 

Neue Beiträge

Zurück