H
hobbicon
Gast
Hallo,
ich möchte eine bestimmt Anzahl an Zahlen von einer externen TXT einlesen und diese dann als Variablen deklarieren lassen. Habe dazu folgenden Code geschrieben.
Wird das so hinhauen bzw. kann man das noch einfacher schreiben? (Es muss als Klasse geschrieben werden...)
ich möchte eine bestimmt Anzahl an Zahlen von einer externen TXT einlesen und diese dann als Variablen deklarieren lassen. Habe dazu folgenden Code geschrieben.
Wird das so hinhauen bzw. kann man das noch einfacher schreiben? (Es muss als Klasse geschrieben werden...)
Code:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <cstdlib>
using namespace std;
// Klasse zum Einlesen der Rohrdaten
class Rohre {
private:
char gesamtdaten[256]; // char-Array, um gesamte Textdatei einzulesen
string V_punkt_string, verlust_Verb_string, LRohr_string;
public:
double V_punkt, verlust_Verb, LRohr;
void einlesen(string dateiname, int zeile);
};
// Einlesefunktion (Klasse Rohre)
void Rohre::einlesen(string dateiname, int zeile) {
ifstream einlesen; // stream erstellen
einlesen.open(dateiname.c_str(), ios::in); // Datei öffnen
// Fehlermeldung
if (!einlesen) {
cerr << "Datei konnte nicht geoeffnet werden." << endl;
system("pause");
exit(0);
}
int i=0;
// Datei auslesen
while (!einlesen.eof()) {
einlesen.get(gesamtdaten[i]);
i++;
}
einlesen.close(); // Datei schließen
// gewünschte Werte aus Gesamtdaten auslesen
int j = 11*zeile-11; // Festlegung der Startposition (11 Zeichen pro Zeile)
i = j;
// V_punkt_string einlesen
while (i<j+2) {
V_punkt_string += gesamtdaten[i];
i++;
}
i++;
// verlust_Verb_string einlesen
while (i<j+7) {
verlust_Verb_string += gesamtdaten[i];
i++;
}
i++;
// LRohr_string einlesen
while (i<j+10) {
LRohr_string += gesamtdaten[i];
i++;
}
// string-Variablen in double-Variablen umwandeln
std::istringstream stm1;
stm1.str(V_punkt_string);
stm1 >> V_punkt;
std::istringstream stm2;
stm2.str(verlust_Verb_string);
stm2 >> verlust_Verb;
std::istringstream stm3;
stm3.str(LRohr_string);
stm3 >> LRohr;
}
int main() {
// Zeile 1 bis 6 einlesen und anschließend die 3 eingelesenen Werte ausgeben
for (int i=1;i<=6;i++) {
Rohre Rohr_i;
Rohr_i.einlesen("Daten.txt", i);
cout << Rohr_i.V_punkt << endl;
cout << Rohr_i.verlust_Verb << endl;
cout << Rohr_i.LRohr << endl << endl;
}
system("pause");
return 0;
}
Zuletzt bearbeitet: