Anfängerproblem



  • Hallo,

    ich fange gerade wieder an C++ zu programmieren und habe Visual Studio 2017.

    Wenn ich folgenden Code eingebe
    [code="cpp"]
    #include <iostream>
    #include <fstream>
    int main( int argc, char* argv[] )
    {
    ofstream myfile;
    myfile.open ("example.csv");
    myfile << "This is the first cell in the first column.\n";
    myfile << "a,b,c,\n";
    myfile << "c,s,v,\n";
    myfile << "1,2,3.456\n";
    myfile << "semi;colon";
    myfile.close();
    return 0;
    }

    bekomme ich folgende Meldung:

    ofstream ist nicht definiert
    ofstream nicht declarierter Bezeichner
    Syntaxfehler myfile ..

    Ich habe bestimmt irgendwas vergessen (Header, Lib...)

    Kennt sich jemand aus?

    Gruß

    Berni



  • Toll.

    Steigst in C++ ein, siehst eine Fehlermeldung, und anstatt darüber nachzudenken, oder den Google zu bemühen wie eine vernunftbegabte Person, rotzt du sie lieber direkt hier rein.

    Für ofstream reicht's nicht mehr bei der derzeitigen Wirtschaftslage, oder was?

    EDIT: für den Fall, dass es echt zu subtil ist und du einfach mit dem Kopf darauf geschlagen werden musst, weil du nicht mal in der Lage bist, Überschriften zu lesen ... std::ofstream . std::!



  • ...ja besten Dank für die nette Antwort!

    Nu' habe ich

    std::ofstream myfile;

    eingegeben, jetzt sagt er aber: ofstream ist kein Element von std

    Und was soll das jetzt wieder?


  • Mod

    Code zeigen! Außerdem vollständige Fehlermeldung. Und bitte beides per Copy&Paste, nicht abtippen!

    BTW: Wie man seinen Beitrag lesbar formatiert



  • Dein Code kompiliert bei mir durch. Folglich zeigst du uns nicht den Code, der deinen Fehler verursacht.

    Was das soll, weißt daher nur du. Oder auch nicht.



  • ...der Code ist komplett und mit Copy/Paste eingefügt!

    Hier sind die Fehlermeldungen (auch mit Copy/Paste):

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler C2039 "ofstream": Ist kein Element von "std" Test4 c:\users\pastorek\c plus plus\test4\test4\test4.cpp 7

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler C2065 "ofstream": nichtdeklarierter Bezeichner Test4 c:\users\pastorek\c plus plus\test4\test4\test4.cpp 7

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler C2146 Syntaxfehler: Fehlendes ";" vor Bezeichner "myfile" Test4 c:\users\pastorek\c plus plus\test4\test4\test4.cpp 7

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler C2065 "myfile": nichtdeklarierter Bezeichner Test4 c:\users\pastorek\c plus plus\test4\test4\test4.cpp 7

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler C2228 Links von ".open" müssen sich in einer Klasse/Struktur/Union befinden Test4 c:\users\pastorek\c plus plus\test4\test4\test4.cpp 8



  • pastorek schrieb:

    ...der Code ist komplett und mit Copy/Paste eingefügt!

    Und du bist dir sicher, dass du mit einem C++-Compiler übersetzt und <fstream> nicht einfach nur ein wertloser Dummy ist? Denn der Code läuft durch, Und wenn du jetzt nicht noch einmal den kompletten Code hier Copypastest und du auch die obigen Ansätze nicht bestätigen kannst, dann kann man dir bis auf "Compiler und Laufzeitlib neuinstallieren" nicht helfen.



  • ..hier ist nochmal der komplette Code:

    [code="cpp"]
    #include <iostream>
    #include <fstream>
    #include "stdafx.h"

    int main(int argc, char* argv[])
    {
    std::ofstream myfile;
    myfile.open("example.csv");
    myfile << "This is the first cell in the first column.\n";
    myfile << "a,b,c,\n";
    myfile << "c,s,v,\n";
    myfile << "1,2,3.456\n";
    myfile << "semi;colon";
    myfile.close();
    return 0;
    }



  • Jetzt gibt es mehrere Möglichkeiten:
    1. Deine Standardbibliothek ist kaputt und definiert std::ofstream nicht - denn der Compiler meckert ja nicht über fehlende Header, sondern nur über fehlende Symbole.
    2. In stdafx.h ist irgendwas kaputt, was dafür sorgt, dass main fehlerhaft geparst wird - entferne mal die include -Direktive und probiere es noch mal.
    3. Der Code, den du gepostet hast, stimmt immer noch nicht mit dem Code überein, den du versuchst zu kompilieren.

    Denn bei mir, mit einem funktionierendem Compiler und einer funktionierenden Standardlib, funktioniert es:

    gcc-Version 6.3.1 20170306 (GCC)
    

    bis auf die stdafx.h -Zeile.

    EDIT: Ich sollte dazusagen, dass wenn es sich um ein Konfigurationsproblem handelt, dies nichts mit C++ zu tun hat. Sondern halt mit deiner Konfiguration. Und die kennen wir ja nicht.



  • ...erstmal besten Dank für die Antworten.

    Der Code stimmt!

    Muss jetzt erstmal schluß machen und melde mich später wieder.

    Gruß

    Berni



  • pastorek schrieb:

    ...der Code ist komplett und mit Copy/Paste eingefügt!

    Glaub ich nicht! Dein Compiler meckert in Zeile 7, in deinem Code steht std::ofstream in Zeile 5.



  • Hallo zusammen,

    ich habe jetzt Visual Studio 2017 wieder heruntergeworfen und dann Visual Studio2017 Enterprise neu installiert, was auch ohne Fehlermeldung gelaufen ist.

    Jetzt versuche ich eine einfache Konsolenanwendung zu kompilieren und bekomme folgende Meldungen:

    E1696 Die Datei “Quelle“ kann nicht geöffnet werden: “stdio.h“
    E1696 Die Datei “Quelle“ kann nicht geöffnet werden: “tchar.h“
    C1083 Datei (Include) kann nicht geöffnet werden: “stdio.h“
    No such file or Directory.

    In den Headerdateien erscheinen: stdafx.h und tchar.h

    Ich denke mal die Standardbibliothek ist kaputt gegangen. Oder irgendwas anderes was ich falsch mache? Ich habe schon herumgegoogelt wie man sie erneuern könnte, aber nichts gescheites gefunden.

    Wenn jemand eine Idee hat, bin ich immer dankbar.

    Gruß

    Berni

    Hiere ist der Code (einfache Konsolenanwendung ohne etwas hizuzufügen):

    [code]
    #include "stdafx.h"

    int main()
    {
    return 0;
    }



  • wieso inkludierst du stdafx.h? die brauchst du da doch nicht
    und es sieht auch nicht aus wie ein generiertes Beispiel vom Projekterstellen



  • Schmeiß stdafx.h raus und schalte in den Projekteinstellungen "vorkompilierte Header benutzen" aus.



  • ....bringt irgendwie alles nichts.

    Ich denke mal, dass der Pfad für die vorkompilierte Header nicht stimmt (No such file or Directory).

    Weiss jemand, wo man diesen Pfad eingeben kann?

    Gruß

    Berni



  • Wenn du das

    Schlangenmensch schrieb:

    Schmeiß stdafx.h raus und schalte in den Projekteinstellungen "vorkompilierte Header benutzen" aus.

    gemacht hast, macht das

    pastorek schrieb:

    ....bringt irgendwie alles nichts.

    Ich denke mal, dass der Pfad für die vorkompilierte Header nicht stimmt (No such file or Directory).

    Weiss jemand, wo man diesen Pfad eingeben kann?

    keinen Sinn.

    Wie auch immer: du hast kein Problem mit C++ sondern eines mit deiner IDE => falsches Forum.



  • Weißt du eigentlich wofür du stdafx.h hast? Das ist ein vorkompilierter Header, der die Kompilierung scheinbar etwas verschnellern soll. Ist soon Microsoft-Ding. Jedenfalls muss der vorkompilierte Header immer der erste Header sein, der in deiner Sourcen-Datei inkludiert werden soll, sonst klappet halt net.

    http://stackoverflow.com/a/16712894



  • Erstelle dein Projekt mal so:

    1. File --> New --> Project
    2. Visual C++ und Empty Project auswählen und Projektname eingeben --> OK klicken
    3. Rechtsklick auf Source Files im Projekt-Baum-Fenster --> Add --> New Item --> C++ File (.cpp) --> OK
    4. Füge deinen Quellcode ohne stdafx.h ein

    #include <iostream> 
    #include <fstream>
    
    int main( int argc, char* argv[ ] )
    {
    	std::ofstream myfile;
    	myfile.open( "example.csv" );
    	myfile << "This is the first cell in the first column.\n";
    	myfile << "a,b,c,\n";
    	myfile << "c,s,v,\n";
    	myfile << "1,2,3.456\n";
    	myfile << "semi;colon";
    	myfile.close( );
    	return 0;
    }
    

    5. F5 drücken --> Yes bestätigen

    Das wars, sollte problemlos gehen.



  • ...ich habe das Windows 10 SDK nachinstalliert und nun funktioniert es.

    Gruß

    Berni


Log in to reply