std::cout << "funktioniert nicht!";



  • Hi,

    also ich bin schon ein erfahrener C programmierer und lerne erst C++. Hier treten jedoch schon die ersten Fehler auf:

    #include <iostream.h>
    
    int main()
    {
    	std::cout << "test";
    	return(0);
    }
    

    unter "Dev C++" läst sich das prima kompilieren. Unter MS-VC++ nicht. Woran kann das liegen?
    Fehler:

    C:\Programme\Microsoft Visual Studio\MyProjects\test1\test1.cpp(5) : error C2653: 'std' : Keine Klasse oder Namespace

    für Eure Antwort wäre ich sehr dankbar

    mfg 🙂



  • lass das .h weg beim

    #include <iostream.h>
    

    Kurt



  • Als Ergänzung:

    Sofern du <iostream.h> includest (oder jeden anderen Header der C++ Standardbibliothek), gibt's den namespace std (noch) nicht, der wurde nämlich (das namespace Feature um genau zu sein) erst später dem Standard hinzugefügt.

    Wenn du allerdings <iostream> includest, dann musst du den namespace std benutzen.



  • erst mal vielen Dank für Eure Antworten 🙂
    Das hat mich erstmal weitergebracht. Doch da ich ein C++ noob bin (erst 3 Tage) verstehe ich die Zusammenhänge, was die Standartklassen angeht, noch nicht ganz (eher gar nicht). Ich dachte das von die "std" alle Klassen enthält. Was ist den jetzt der Unterschied zwischen <iostream> und <iostream.h>? Ich habe soweit kein Problem mit C++ nur die Zusammenhänge der Standartbibliotheken kapier ich noch nicht. Könnt Ihr mir vielleicht ein paar Quellen angeben, wo ich das alles nachschlagen kann?

    gruss 🙂



  • iostream.h ist deprecated, sagt auch der g++ als Warning, das war aktuell als es noch keine Namespaces gab und deshalb ist da auch kein std namespace drin.
    iostream (ohne .h) is die aktuelle Version mit namespaces
    Die aktuellen Standardheader haben AFAIK alle kein .h

    Die C Standardheader wie zb math.h heißen jetz cmath ... also c + Name ohne .h



  • THX,
    hmm..., heist das etwa das man in den neuen Bibliotheken (ohne *.h) immer

    using namespace std;
    

    (hier im Fall von <iostream>) im code einfügen soll, während in den alten Versionen (mit *.h) dies bereits in der <iostream.h> drinnstand?
    Oder war die cin und cout dort nicht in eine andere Klasse (wie zB std) eingepackt sondern "alleinstehend"? 😕

    Für eine Antwort wäre ich sehr dankabar 🙂

    gruss



  • in iostream.h standen die Sachen ganz ohne irgendeinen namespace, jetz schätze wird da einfach iostream inkludiert und lauter usings für die Sachen dadrin gemacht
    wenn du die HEader ohne .h nimmst musst du entweder immer std:: schreiben oder ein using nehmen


Anmelden zum Antworten