wert aus datei lesen und in variable speichern?
-
hallo
ich suche schon seit einer weile einen weg,um bestimmte werte aus dateien (textdatei) auszulesen und und sie dann in variablen speichern zu lassen
ich weiss,dass es einen gibt,denn sonnst gäbe es keine tools,die mit config-dateien arbeiten,aber ich finde eifach nichts..als kleines beispiel,hier die datei
wert_eins = 7.5 wert_neun = 0.335 vorname = "Detlef" nachname = "Musterman"so,nun soll das programm die datei laden und alle werte in ihre passenden variablen ablegen
#nötige includes int main(){ double wert_eins, wert_neun; char vorname[25],nachname[25]; ifstream datei("datei.txt",std::ios_base::in); //jede zeile aus datei lesen und werte den variablen zuordnen //variable wert_neun bekommt also den selben wert,wie er in der datei steht (0.335) datei.close(); std::cout << wert_neun << endl; //müsste nun 0.335 auf dem bildschirm ausgeben return 0; }ich wär froh,wenn mir da einer weiterhelfen könnte,denn es ist sehr wichtig für mein kleines projekt
danke schonmal
-
Hallo
Siehe C++ FAQ, Thread "Dateien und Ströme". Dort wird auch erklärt wie man den nun mit geöffneten Dateistreams umgeht.
bis bald
akari
-
naja,durchgelesen hab ich mir das zwar schonmal,aber richtig schlau wurd ich daraus nicht
// Datei zum Lesen öffnen. File.open("Person.dat", ios::in|ios::binary); if (File.is_open()) { PERSON Pers; while (File.read((char*)&Pers, sizeof(Pers))) cout << Pers.VorName << " " << Pers.NachName << " " << Pers.TelNr << endl; }die bedeutung dieses blocks verstehe ich zum beispiel überhaupt nicht
und ich habe auch das gefühl,dass er nicht ganz das tut,was ich suche
-
hmm dein Problem ist eher das du scheinbar nicht direkt weißt was nachher von deinem Variablennamen übrig bleibt. Nichts. D.h. du musst jede Zeile einlesen und dann hingehen und den String parsen.
aja der Code den du da gepostet hast ... der öffnet eine Datei binär (Person.dat um genau zu sein). Kontrolliert ob se offen ist. Legt eine Variable Pers an. Ließt deren Inhalt aus der Datei aus. Gibt die eingelesenen Werte aus.
-
mettwurst schrieb:
ich suche schon seit einer weile einen weg,um bestimmte werte aus dateien (textdatei) auszulesen und und sie dann in variablen speichern zu lassen
ich weiss,dass es einen gibt,denn sonnst gäbe es keine tools,die mit config-dateien arbeiten,aber ich finde eifach nichts..als kleines beispiel,hier die datei
wert_eins = 7.5 wert_neun = 0.335 vorname = "Detlef" nachname = "Musterman"Hier ist mal so ein ganz einfacher Entwurf ohne viel Schnickschnack
#include <fstream> #include <iostream> #include <string> #include <sstream> #include <map> struct Entry { template< typename T > T get() const { std::istringstream buf( m_value ); T ret; if( buf >> ret ) return ret; return T(); // evt. andere Fehlerbehandlung } friend std::istream& operator>>( std::istream& in, Entry& e ) { char gleich; if( in >> gleich && gleich != '=' ) in.setstate( std::ios_base::failbit ); std::string value; if( getline( in >> std::ws, value ) ) { swap( e.m_value, value ); } return in; } private: std::string m_value; }; int main() { using namespace std; ifstream file( "datei.txt" ); map< string, Entry > config; string key; for( Entry e; file >> key >> e; ) config.insert( make_pair( key, e ) ); cout << "Wert1 = " << config["wert_eins"].get< double >() << endl; cout << "Vorname = " << config["vorname"].get< string >() << endl; return 0; }als nächstes wirst Du wahrscheinlich wissen wollen, wie man die Hochkommata um den String herum weg bekommt ...
Gruß
Werner