Anzahl der Nachkommastellen variable gestallten



  • .open() existiert nicht!



  • 314159265358979 schrieb:

    .open() existiert nicht!

    Wenn das ein Witz sein soll, dann ist er wirklich schlecht.

    http://www.cplusplus.com/reference/iostream/fstream/open/


  • Mod

    [Rewind] schrieb:

    314159265358979 schrieb:

    .open() existiert nicht!

    Wenn das ein Witz sein soll, dann ist er wirklich schlecht.

    http://www.cplusplus.com/reference/iostream/fstream/open/

    Er spielt darauf an, dass das open, genau wie das close, eines Dateistreams eher eine Funktion ist, die man nur in Ausnahmefällen braucht. Beide werden jedoch sehr oft von Leuten benutzt, die C++ wie C programmieren und sich dieser Tatsache gar nicht bewusst sind.



  • Dann nimmt man eben

    fstream myfile("C:\\wo\\auch\\immer\\sie\\liegt\\datei.txt");
    

    Ich lasse mich immer gerne eines Besseren belehren, aber was ist daran verkehrt, die in C++-Standardbibliotheken implementierten Funktionen zu verwenden? 😕 Macht mich das automatisch zum C-Programmierer? :totally confused:


  • Mod

    Es ist eben unschön, weil man erst ein uninitialisiertes Objekt erzeugt und dieses dann erst noch mittels einer Memberfunktion in einen gebrauchsbereiten Zustand versetzen muss. Dies läuft den Grundprinzipien der objektorientierten Programmierung zuwider.
    Wenn man das trotzdem macht zeigt man auch, dass man sich nicht richtig mit den Standardfunktionen und mit gutem Stil auskennt.

    Abgesehen davon ist es auch schlichtweg länger zu schreiben. Und gefährlicher, denn man könnte potentiell ein uninitialisiertes Objekt benutzen oder das open kann fehlschlagen, weil der Stream schon an eine andere Datei gebunden sein könnte.



  • Um nochmal zu deinem printf Problem zu kommen:
    Im Formatstring bei printf kann man selbstverständlich auch die Genauigkeit angeben.
    Wenn du 8 Nachkommstellen möchtest, schreibst du "%.8f".
    RTFM zu printf

    Du kannst das mit sprintf in einen String schreiben und dann von hinten die Nullen eliminieren.



  • SeppJ schrieb:

    Es ist eben unschön, weil man erst ein uninitialisiertes Objekt erzeugt und dieses dann erst noch mittels einer Memberfunktion in einen gebrauchsbereiten Zustand versetzen muss. Dies läuft den Grundprinzipien der objektorientierten Programmierung zuwider.

    Gar nicht. Es beisst sich bloss mit RAII.

    Wenn man das trotzdem macht zeigt man auch, dass man sich nicht richtig mit den Standardfunktionen und mit gutem Stil auskennt.

    Wenn man sich über solche Kleinigkeiten aufregt, zeigt man ...
    Blah.

    Abgesehen davon ist es auch schlichtweg länger zu schreiben. Und gefährlicher, denn man könnte potentiell ein uninitialisiertes Objekt benutzen oder das open kann fehlschlagen, weil der Stream schon an eine andere Datei gebunden sein könnte.

    Man könnte sowieso potentiell ein uninitialisiertes Objekt benutzen, nämlich wenn man vergisst nach dem ctor erstmal zu gucken ob der Stream auch "good" ist.
    C++ Streams werfen nämlich per Default keine Exceptions.


  • Mod

    Ich erläutere nur, was 3.142... meinte



  • SeppJ schrieb:

    Ich erläutere nur, was 3.142... meinte

    Bist du hellsichtig?

    Wenn etwas vom Herrn dreikommavierzehnfuffzehn stammt, und offensichtlich falsch ist, gehe ich eher davon aus, dass er - freundlich formutliert - vorschnell etwas geschrieben hat, was er glaubt zu wissen, aber eben nicht weiss.


  • Mod

    hustbaer schrieb:

    SeppJ schrieb:

    Ich erläutere nur, was 3.142... meinte

    Bist du hellsichtig?

    Wenn etwas vom Herrn dreikommavierzehnfuffzehn stammt, und offensichtlich falsch ist, gehe ich eher davon aus, dass er - freundlich formutliert - vorschnell etwas geschrieben hat, was er glaubt zu wissen, aber eben nicht weiss.

    Naja, direkt falsch ist es aber auch nicht, was er gesagt hat, nur ein bisschen übertrieben. Es ist nur konsequent die in C++ üblichen Methoden wie RAII hier auch zu benutzen, aus den gleichen Gründen warum man sie überall anders auch benutzt.



  • SeppJ schrieb:

    hustbaer schrieb:

    SeppJ schrieb:

    Ich erläutere nur, was 3.142... meinte

    Bist du hellsichtig?

    Wenn etwas vom Herrn dreikommavierzehnfuffzehn stammt, und offensichtlich falsch ist, gehe ich eher davon aus, dass er - freundlich formutliert - vorschnell etwas geschrieben hat, was er glaubt zu wissen, aber eben nicht weiss.

    Naja, direkt falsch ist es aber auch nicht, was er gesagt hat, nur ein bisschen übertrieben.

    Er sagt gibt's nicht, gibt's aber doch. Viel direkter/klarer/eindeutiger falsch kann etwas nicht mehr sein.

    Es ist nur konsequent die in C++ üblichen Methoden wie RAII hier auch zu benutzen, aus den gleichen Gründen warum man sie überall anders auch benutzt.

    Ja. Das ist deine Meinung. Es gibt andere Meinungen. Und vor allem verschwinden durch Meinungen noch lange keine Methoden aus dem Standard.


Anmelden zum Antworten