String Headerdatei, fehler



  • #include <string>
    #include <iostream>
    
    int main()
    {
    std::string satz = "Hallo C++!";
    
    std::cout << satz;
    return 0;
    }
    

    oder

    #include <string>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    string satz = "Hallo C++!";
    
    cout << satz;
    return 0;
    }
    

    Hat nichts mit VC++ zu tun.
    Wenn du den Code aus einem Buch hast dann wirf es weg.

    @bsash: include in c++ ohne ".h"



  • mal eine off-topic frage:
    soll man für seine eigenen Headerdateien die Endung .h benutzen oder .hpp?
    Oder soll man sie ohne Endung nennen, wie in der Standardbibliothek? 😕



  • Den Dingern gar keine Endung zu geben ist auf keinen Fall eine gute Idee und ob .h oder .hpp ist Geschmackssache; ich für meinen Teil verwende gerne .cpp+.hpp und .c+.h.



  • Ich benutze zurzeit .cpp und .h.
    In den meisten Bücher wird man auch diese Kombination finden.
    Naja, hast Recht. Das ist Geschmackssache. 😃



  • Ich hab ne andere Lösung gefunden
    #include <iostream>
    #include <string>
    usign namespace std;
    void main()
    {
    und dann er Rest

    Was macht eigentlich usign namespace std; ?



  • using namespace x; macht all Functionen, Klassen un Variablen in dem Namesraum (namespace) x in dem Scope zugänglich indem es sich befindet. Hier ist es der globale Namesraum, das heist überall zugänglich.

    Namesräume sind eigentlich nur Prefixe die man gelegendlich mit einer using Instruktion beiseite lassen kann. Also:

    namespace x{
        int a;//der eigentliche Namen ist nicht a sondern x::a
    };
    int main(){
        //a=7;   Error "a" ist unbekannt
        x::a=20;//Kein Error da x::a der komplete Namen ist
        using namespace x;
        a=5;//Durch die unsing Instruktion sucht der Kompiler nach a und
        //x::a und findet x::a. Fals er beide findet Error
        return 0;
    }
    void foo()
    {
        //a=235; Error da der scope indem die using Instruktion ist
        //wieder geschlossen ist
        using x::a;//Man muss nicht immer alles in einem Namesraum
        //zugänglich machen, einzelne Elemente gehen auch
        a=999;
    }
    


  • Christop aka Optimusrau schrieb:

    Ich hab ne andere Lösung gefunden

    Im Wesentlichen ist das Unix Toms Lösung mit Syntaxfehlern. (usign + void main, obwohl es int main heißt)

    Lies mal die FAQ, da ist das using namespace std; erklärt.



  • Damit sagst du, dass der Compiler die Funktionen etc. in dem Namensraum std suchen soll.
    Somit kannst du alle Klassen und Funktionen, die in dem Namensraum definiert sind, benutzen. D.h. hier alle Standardklassen und Funktionen
    Statt

    using namespace std;
    

    kann man auch

    std::cin
    

    schreiben

    Benutze bei deiner Lösung aber bitte

    int main()
    {
       // ...
       return 0;
    }
    

    , da

    void main()
    {
       // ...
    }
    

    nicht erlaubt ist. // EDIT



  • void main () war noch nie erlaubt, ist daher nicht veraltet.



  • upps. ich hab den Beitrag editiert. 😃


Anmelden zum Antworten