C++ File-Streams



  • dachschaden schrieb:

    #include "stdafx.h"
    

    A-ha. Das ist ein Windows-Header.

    Ist keine Windows-Header in dem Sinn. Ist bloss der Default-Name des Header Files das Visual Studio per Default für die "Precompiled Header" Funktion erzeugt.
    stdafx.h gehört also zum eigenen Projekt, und man kann reinschreiben was man möchte. Bzw. es umbenennen, ganz entfernen - was auch immer.



  • Neben den schon genannten Problemen:
    0. falsches Forum

    1. || statt |
    2. #include <cstring>
      3. Mischmasch aus C und C++
      4. Benutzen von system
      frage ich mich, ob du vielleicht eine pizza.dat mit float erzeugt hast und dann mit double wieder auszulesen versuchst oder umgekehrt. Hast du also vor deinen Tests mal die pizza.dat gelöscht? Ansonsten ist es schwer, das Problem nachzuvollziehen.

    Deine main() hat 130 Zeilen -> überleg dir doch mal, ob du das nicht besser in kleinere testbare Funktionen auslagern könntest.

    Warum gibst du in char pizzaDatei[256] = "pizza.dat"; die Länge an? Warum überhaupt überall C-Strings, wenn du doch C++ zu machen scheinst? Was spricht gegen std::string?

    Warum schreibst du die Daten binär in eine Datei mit diesem unschönen Cast: (char*)&einePizza - wäre es nicht besser, die Daten irgendwie anders zu schreiben?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dies war ein Übungsbeispiel und da solltet ihr euch eigentlich nicht fragen wieso ich z.B binär in die Datei schreibe...
    Ich habe einzig und allein darum gebittet auf Fehler zu achten und nicht andere unnötige Dinge in Frage stellen.

    Dieses Beispiel habe ich selber geschrieben und mit der Lösung kontrolliert.

    Den Fehler konnte ich dank eurer Kommentare finden. -> ifstream inFile(pizzaDatei, ios::in || ios::binary);

    Vielen Dank dafür!

    Wie bin ich ins falsche Forum "gerutscht"?
    Ich war zuallererst im richtigen Forum doch als ich den Text absenden wollte hatte ich die Rechnung falsch eingegeben.
    Wieso? Die Rechnung war 8+7 und da ich von den Taschenrechner gewöhnt war das der 1 links oben ist hatte ich 75 eingegeben statt 15.
    Danach war ich wieder auf der Startseite. Den Text hatte ich glücklicherweise zwischenkopiert und schnell einen neuen Beitrag gemacht und dabei nicht auf das Forum geachtet...abgesendet.

    Entschuldigung dafür!

    PS: Wenn ich nicht #include "stdafx.h" einfüge...
    fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "stdafx.h"" einzufügen?
    ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========



  • fossition schrieb:

    Dies war ein Übungsbeispiel und da solltet ihr euch eigentlich nicht fragen wieso ich z.B binär in die Datei schreibe...

    Doch. Weil das Beispiel alles ist, was wir haben. Wir wissen sonst nicht, was du machst - aber bei dem, was wir sehen, fragen wir uns, warum du das machst.

    fossition schrieb:

    Ich habe einzig und allein darum gebittet auf Fehler zu achten und nicht andere unnötige Dinge in Frage stellen.

    1. Gebeten.
    2. Im Leben bekommt man nicht immer das, was man will. Gewöhn dich dran.

    fossition schrieb:

    PS: Wenn ich nicht #include "stdafx.h" einfüge...
    fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "stdafx.h"" einzufügen?
    ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========

    In den Projekteinstellungen vorkompilierten Header deaktivieren.
    Das Problem ist, dass das ein "Feature" von Visual Studio ist, welches aber Kompatibilität mit anderen Betriebssystemen bricht. Das hier ist das C++-Forum, nicht das Windows-Forum. Deswegen sollte der Code, der hier gepostet wird, kompatibel sein, damit auch Leute auf einem Linux den Code kompiliert bekommen.



  • fossition schrieb:

    Ich habe einzig und allein darum gebittet auf Fehler zu achten und nicht andere unnötige Dinge in Frage stellen.

    dachschaden schrieb:

    1. Gebeten.
    2. Im Leben bekommt man nicht immer das, was man will. Gewöhn dich dran.

    Deine provokante Persönlichkeit gibt mir den Anschein das du in deinem Leben nicht das bekommen hast was du willst. Doch dies lass nicht auf mich bzw. andere Nutzer aus.
    Und bitte achte auf deine Wortwahl.

    Trotzdem bedanke ich mich für deine Bemühungen!



  • fossition schrieb:

    Deine provokante Persönlichkeit gibt mir den Anschein das du in deinem Leben nicht das bekommen hast was du willst.

    Ich würde mir, wenn ich du wäre, mal überlegen, warum ich so schreibe, wie ich schreibe. Das Ganze ist auch ein Test an die Leute hier. Wenn diese brauchbar sind, ignorieren sie sie. Wenn nicht ... tja, dann erwähnen sie sie halt. Viel zu lernen du noch hast, mein junger Padawan.

    fossition schrieb:

    Doch dies lass nicht auf mich bzw. andere Nutzer aus. Und bitte achte auf deine Wortwahl.

    Was soll mit meiner Wortwahl sein? Du kannst dir sicher sein, dass die Moderation gegen meine Wortwahl nichts hat, sonst hätte sie mich deswegen schon angepisst. Hat sie nicht. Und dann brauchst du dich auch nicht darüber zu beschweren.

    Ich bin dir gegenüber direkt. Wenn du Mist baust, dann sage ich dir das. Notfalls drastisch, damit du merkst, dass das Mist ist. Nichts anderes würde ich von den Leuten hier auch verlangen (siehe hustbaer). Je schneller du das lernst, je schneller wirst du "in der Community" lernen, worauf es ankommt.
    Wir waren alle mal Anfänger und haben dämliche Fehler gemacht, deswegen wollen wir nicht, dass Leute die gleichen dämlichen Fehler wieder machen.



  • Dachschaden ist in erster Linie ein provokantes Arschloch.



  • dachschaden schrieb:

    Das Problem ist, dass das ein "Feature" von Visual Studio ist, welches aber Kompatibilität mit anderen Betriebssystemen bricht.

    Nur wenn man es falsch verwendet.
    Wenn man immer überall die korrekten Pfade für #include verwendet, dann baut so ein Projekt mit oder ohne Precompiled-Header Feature.
    Es baut mit dann nur (meistens) schneller.



  • hustbaer schrieb:

    Nur wenn man es falsch verwendet.
    Wenn man immer überall die korrekten Pfade für #include verwendet, dann baut so ein Projekt mit oder ohne Precompiled-Header Feature.

    ... damit meinte ich eher, dass es sich hierbei um einen Header handelt, der vom GCC/G++ nicht generiert wird, und ich die Zeile deswegen entfernen muss, um es überhaupt kompiliert zu bekommen. Funktionell hatte das keine Nachteile, es war halt trotzdem notwendig.

    In diesem Sinne ist "inkludiert" bereits falsch verwendet. Was auch der Grund ist, warum ich bei Bibliotheks-internen #include s gerne noch mal einen Guard einbaue um die Anweisung und nicht nur in der Datei für den Fall, dass der Programmier das Header-Verzeichnis nicht in die Standard-Include-Verzeichnisse aufnimmt. Weil sonst das #include an sich bereits tödlich ist.

    @beg_offl: Wenn du nur arschverletzt sein willst, schlage ich vor, dass du das woanders bist.

    EDIT: Missverständlichen Satz weniger doppeldeutig gemacht.



  • fossition schrieb:

    Deine provokante Persönlichkeit ...

    Wie kann eine Persönlichkeit provokant sein?
    Das ist genauso rätselhaft wie "gebittet".
    Ausserdem ist dachschaden einer von den Harmlosen. Es gibt Schlimmere (mich z.B. :p )

    EDIT:
    Ansonsten hat mein main ungefähr zwei Zeilen:

    myclass mc;
    return( mc.start() );
    

    Alles Andere spielt sich ausserhalb von main ab.


Anmelden zum Antworten