Cout & MSVS .NET (C++ Konsolenprogramm)



  • // testkonsole.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	cout << "ddd" << endl;
    	return 0;
    }
    

    wenn ich mit STRG+F5 ausführe, dann bekomme ich die Fehlermeldung
    "Fehler beim Erstellen. Trotsdem Fortfahren?"

    Wie liegt der Fehler?

    ------ Erstellen gestartet: Projekt: testkonsole, Konfiguration: Debug Win32 ------
    
    Kompilieren...
    testkonsole.cpp
    c:\Dokumente und Einstellungen\Jens Doof\Eigene Dateien\Visual Studio Projects\testkonsole\testkonsole.cpp(8) : error C2065: 'cout': nichtdeklarierter Bezeichner
    c:\Dokumente und Einstellungen\Jens Doof\Eigene Dateien\Visual Studio Projects\testkonsole\testkonsole.cpp(8) : error C2065: 'endl': nichtdeklarierter Bezeichner
    
    Das Build-Protokoll wurde unter "file://c:\Dokumente und Einstellungen\Jens Doof\Eigene Dateien\Visual Studio Projects\testkonsole\Debug\BuildLog.htm" gespeichert.
    testkonsole - 2 Fehler, 0 Warnung(en)
    
    ---------------------- Fertig ----------------------
    
        Erstellen: 0 erfolgreich, 1 fehlgeschlagen, 0 übersprungen
    


  • Wenn due ein C++.net Programm nimmst, kannst du wahscheinlich kein cout mehr verwenden, verwende anstatt cout Console::WriteLine("Hello");
    (Falls es doch gehen sollte musst du auf jeden fall <iostream> inkludieren.

    Wenn du ein normales C++ Programm machen willst und in dem zugehörigen Forum befindest du dich gerade dann nimm:

    #include <iostream>
    using namespace std;
    
    int main(){
    cout << "Hello" << endl;
    cin.get();
    return 0;
    }
    


  • danke, ich habe deinen include übernommen
    und nun funktioniert's erstmal. 🙂

    ich habe bei projekt c++ und nicht c# ausgewählt.
    jetzt sollte ich doch auch standart c++ haben, oder?

    wieso steht am ende der konsolenanwendung jetzt eigentlich
    "Press any key to continue" ?

    danke 🙂



  • _tmain nimmt man nur wenn man C++.net Code schreibt. Da du jetzt wenn ich das richtig verstanden habe meinen Code übernommen hast (Den in den Codetags, nicht das Console::WriteLine) und der fuktioniert, hast du ein standard C++ Projekt.
    "Press any key to continue" steht jetzt da weil die konsole mit cin.get(); auf eine eingabe wartet, damit sie sich nicht schließt.



  • mein code sieht jetzt so aus:

    // testkonsole.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    
    #include <iostream> 
    using namespace std;
    
    int main(int argc, _TCHAR* argv[])
    {
        int a, b = 0;
    
    	cout << "Geben Sie die Rechtecks-Daten ein:" << endl << endl;
    
    	cout << "Breite: ";
    	cin >> a;
    
    	cout << "Hoehe: ";
        cin >> b;
    
    	cout << "\n\nFlaeche: " << a*b;
    
    	return 0;
    }
    

    funkt auch, aber ende steht immernoch dieses "Press any key to continue"

    wie kann ich das verhindern?



  • Das macht der MSVC um zu verhindern, dass sich das Konsolenfenster gleich wieder schließt, wenn das Programm abgearbeitet ist (was hier im Forum ja auch immer zu einer Flut von Fragen führt ;))

    Sollte ja nicht weiter stören, wenn du das Programm übrigens so aufrufst (über die exe) sollte das nicht kommen...

    Mfg, smasher1985



  • danke,

    ist aber auch im prinzip nicht so wichtig,
    weil ich mich erstmal mit der grundlegenden arbeitsweise und
    syntax von c++ vertraut machen will.

    später geht eh' alle über ne gui. 🙂

    danke! 😃



  • Bitte äußert euch nur zu MS VC, wenn ihr euch damit auch auskennt.

    Das Problem ist einfach, dass du vor cout und endl kein std:: geschrieben hast.
    Entweder du schreibst std:: davor, du schreibst using namespace std; vor deine main, oder du schreibst using std::cout; using std::endl; vor deine main.



  • ich verstehe nicht....

    "using namespace std"
    steht vor der main-funktion... 🙄



  • yorba schrieb:

    ich verstehe nicht....

    "using namespace std"
    steht vor der main-funktion... 🙄

    Ja. Das nennt sich using Direktive. Aber wenn du C++ lernst, dann wirst du 'eh noch was darüber im Zusammenhang mit Namensräumen lernen.

    Master_Max schrieb:

    _tmain nimmt man nur wenn man C++.net Code schreibt.

    Nicht zwangsläufig. _tmain nimmt man dann, wenn man ANSI/UNICODE fähigen Code schreiben will.


Anmelden zum Antworten