Config auslesen und in Struktur schreiben
-
Hi,
ich habe an meinem aktuellen Projekt ein Problem.
Ich habe eine config Datei (config.3dsim) welche folgendermassen aussieht:[P1] Masse = 1000 X = 100 Y = 0 Z = 0 VX = 0 VY = 0 VZ = 0 [P2] Masse = 500 X = 0 Y = 0 Z = 0 VX = 0 VY = 0 VZ = 0 [P3] Masse = 100 X = 0 Y = 0 Z = 0 VX = 0 VY = 0 VZ = 0P1,P2,P3 sind die Strukturen in die ich dann die folgenden Werte einlesen will.
Danach soll zum Beispiel in "P1.m" (Masse) 1000 stehen.struct Satellite { double xlenght; double ylenght; double zlenght; double r; double vx; double vy; double vz; double ax; double ay; double m; }P1, P2, P3;das ist noch die Struktur
Nun ich hoffe ihr könnt mir da etwas effektives Vorschlagen
GrussLukas
-
Um von Dateien zu lesen oder in sie zu schreiben, gibt es
std::fstream. Mitoperator>>kannst du einzelne Teile auslesen und in Variablen speichern.Eine genauere Erklärung und Beispielcode findest du unter www.cplusplus.com.
-
Hallo Lukas,
ich unterstelle mal, dass X,Y und Z den Membern x-,y-,zlenght entsprechen. Dann sähe die Minimallösung so aus:
#include <iostream> #include <fstream> #include <limits> struct Satellite { double xlenght; double ylenght; double zlenght; double r; double vx; double vy; double vz; double ax; double ay; double m; }; std::istream& operator>>( std::istream& in, Satellite& sat ) { const std::streamsize ALL = std::numeric_limits< std::streamsize >::max(); return ((((((in.ignore( ALL, '=' ) >> sat.m) .ignore( ALL, '=' ) >> sat.xlenght).ignore( ALL, '=' ) >> sat.ylenght).ignore( ALL, '=' ) >> sat.zlenght) .ignore( ALL, '=' ) >> sat.vx).ignore( ALL, '=' ) >> sat.vy).ignore( ALL, '=' ) >> sat.vz; } int main() { using namespace std; ifstream file( "input.txt" ); Satellite P1, P2, P3; if( file >> P1 >> P2 >> P3 ) cout << "3 Satelliten gelesen " << endl; return 0; }Gruß
Werner
-
Herzliches Dankeschön
Das funktioniert perfekt.
Noch einen schönen Abend
GrussLukas