Variablen in wissenschaftlicher Schreibweise aus Datei lesen



  • Hallo,

    ich habe ein Programm, das ein Textfile erstellt. Darin stehen auch einige Variablen, die das Programm aus anderen Dateien einliest.
    Je nachdem, welcher Fall zutrifft, wird eine andere Datei gelesen.

    //Beispiel:
    "Hier steht ein Text mit einer Variablen aus einer Datei"<<var1<<"\n"
    

    In der Datei steht z.B.: var1 = 0.0000343e+03. Nun möchte ich, dass die Variable genauso im Text wiedergegeben wird (normalerweise wird da ja automatisch 0.0343 daraus gemacht).

    Also habe ich es entsprechend angepasst. Dann sieht die Zeile mit der var1 jetzt folgendermaßen aus:

    "Hier steht ein Text mit einer Variablen aus einer Datei"<<scientific<<setprecision(7)<<var1<<"\n"
    

    Das ist zwar recht umständlich für jede einzelne Zahl, aber es funktioniert. Wenn ich nun aber bei einem anderen Fall aus einer anderen Datei lese, in der die var1 = 1.45 ist, dann wird diese Zahl durch das precision und scientific natürlich auch als 0.1450000e+01 dargestellt, obwohl ich es als 1.45 möchte.

    Wie kann ich die Variablen unverändert, also genauso in wissenschaftlicher Schreibweise lesen und ausgeben, wie sie in der Datei stehen?

    Vielleicht könnt Ihr mir weiterhelfen?



  • Lies sie als Text ein 🙄



  • Ja, das funktioniert bei den Variablen, die einfach nur eingelesen werden.
    Wenn ich mit diesen Variablen nun aber auch rechnen will?



  • LadyM schrieb:

    Ja, das funktioniert bei den Variablen, die einfach nur eingelesen werden.
    Wenn ich mit diesen Variablen nun aber auch rechnen will?

    Dann bleibt dir nichts anderes übrig als entweder den Wert einmal als String und einmal als z.B. double zu halten. Oder den Aufbau zu analysieren und diesen mitzuführen:

    z.B. (extra simpel gehalten)

    struct MyDouble
    {
      double value;
      int precision;
      bool scientific;
    }
    

    Etwas weiter gesponnen kannst du ja eine Klasse bauen die einen Konstruktor mit einem String hat, darin die Analyse kapseln, und den Stream-Operator zu überladen...

    cu André


Anmelden zum Antworten