[C++] Tabelle speichern und auslesen

M--G

Lieutenant
Registriert
Dez. 2006
Beiträge
772
Hallo alle zusammen,

jetzt hattet ihr etwas Ruhe vor mir und nun nerve ich wieder mit ein paar Fragen.

Ich möchte Gerne gezielt Daten aus eine Tabelle auslesen und speichern.
Konkret handelt es sich um eine Temperatur und einem ihr zugeordneten Integer.
also z.B. 30,4(°C) und 15

Gespeichert soll das ganze werden, damit man ohne den Quelltext die "Kalibrierungen" ändern kann.

1. In welches Dateiformat lager ich am besten die Daten aus? (später brauche ich auch eine 40x40x60 große Tabelle, die von Mathlab ausgelesen werden sollen könnte, aber das ist erstmal nicht wichtig ;) )
2. Wie adressiere (einlesen & speichern) ich einzelne Datenpaare?
Am liebsten über die Temperatur oder Zeile....

Habe schon ein bischen gesucht und denke, dass es irgendwie mit fstream und dem csv Format gehen müsste?
Ein richtiges Beispiel, dass mir weitergholfen hätte, habe ich aber nich nicht gefunden.

Vielen Dank
Martin
 
Ich würde es mal mit SQLLite versuchen. Damit habe ich sehr gute Erfahrungen gemacht. Ich denke dass sich der Aufwand auszahlt bei einer 40x40x60 großen Tabelle.
 
Ich würde es mal mit SQLLite versuchen. Damit habe ich sehr gute Erfahrungen gemacht. Ich denke dass sich der Aufwand auszahlt bei einer 40x40x60 großen Tabelle.
Würd ich nicht sagen.. Insbesondere, weil es sich so anhört dass Menschen von Hand die Daten manipulieren wollen. Da wärs dann schön, wenn das einfach leicht lesbare Text-Dateien sind.

1. In welches Dateiformat lager ich am besten die Daten aus? (später brauche ich auch eine 40x40x60 große Tabelle, die von Mathlab ausgelesen werden sollen könnte, aber das ist erstmal nicht wichtig )
Du erfindest das Dateiformat quasi selbst und nennst die Dateien einfach am Ende ".txt".
zB könntest du in die aller erste Zeile der Datei die größe der Tabelle schreiben (40, 40, 60) und anschließend eben genau 40*40*60 Wertepaare Zeilenweise untereinander klatschen.
Dann muss nur festgelegt sein in welcher Reihenfolge du die Dimensionen durchläufst. Also wenn in Zeile 2 dann der Wert für die Zelle (1, 1, 1) steht folgt dann in Zeile 3 (1, 1, 2) oder (2, 1, 1).
Suchs dir aus :)

2. Wie adressiere (einlesen & speichern) ich einzelne Datenpaare?
Am liebsten über die Temperatur oder Zeile....
Naja du hast einfach je Zeile zB
30,4 # 15
stehen.
Möchtest du nun von deinem Programm aus explizit den Wert bei (3, 4, 5) ändern musst du diese Zeile eben ersetzen.
An den Zeilenindex kommst du durch
1 (für die Kommentarzeile in der die Tabellengröße steht)
+3 (x-Koordinate der Zelle)
+40*4 (y-Koordinate der Zelle = 4)
+5*40*60 (z-Koordinate der Zelle=5)

korrigiert mich, wenn ich mich verrechnet habe.
Die Idee hinter der Rechnung ist die:
Willst du zB ein 3x3 TicTacToe Feld in ein 1D-Array abbilden brauchst du eine Umrechnung, die Koordinaten wie (1, 2) (=unten mitte da von 0 bis 2 je Achse) umrechnet in einen Array Index.
Hier könnte man einfach sagen x + 3*y also in diesem Fall 1+2*3= 7.
Rechts unten wäre dann 2, 2 und somit 2+2*3=8 usw.
 
Zuletzt bearbeitet:
Wenn sich's doch um eine Tabelle handelt, würde sich dann nicht wirklich das .csv-Format anbieten? Dann muß er wengistens kein Format selbst "erfinden", und Benutzer können das Ding, wenn sie wollen, auch bequem in Excel oder einem ähnlichen Programm editieren.
 
Klingt auch gut-
geht das denn unkompliziert bei 3D? Excel-Tabellen sind ja idR 2D. Oder wie is das?
 
Oh, die 3D-Anforderung hatte ich überlesen. Das könnte natürlich problematisch sein.
 
Zurück
Oben