Rätsel mit using namespace std;



  • Hi !
    Was ist das für eine komische Funktion oder Anwendung, dass man sie doch immer wieder braucht..
    Ich verstehe das nicht, denn es heißt doch nur das man die Funktionen oder den Teil aus der stdio.h verwendet oder nicht ?

    Deshalb folgdendes Programm hier aus dem Forum..

    #include <iostream> 
    #include <conio.h> 
    #include <stdio.h>
    using namespace std; 
    
    int main() 
    { 
        int zahl; 
        cin >> hex >> zahl; 
        cout << "Die Hexzahl " << hex << zahl << " ist die Dezimalzahl " << dec << zahl << "\n\n"; 
        getch(); 
    }
    

    Mit dem using namespace läuft es mit stdio.h nicht.. WARUM ???

    Edit:

    Noch eine Frage und noch ein kleines Programm...

    #include <iostream.h>
    #include <string>
    #include <conio.h>
    
    using namespace std;
    
    int main ()
    
    {
    
    char stringtest[4000];
    int hes;
    
    cin.getline(stringtest, 100);
    
    hes == stringtest; // geht nicht ISO C++ forbids comparison between pointer and integer
                       // Ok aber wie kann ich es dann anstellen einen Text mit Leerzeichen nach
                       // Hex oder Oktal umzuwandeln ?
                       // Nebenbei wie kann man eigentlich  etwas binär ausgeben ?
    
    cout <<"\n\nHexadezimale Ausgabe :\n\n"<< hex << hes;
    cout <<"\n\nDezimale Ausgabe :\n\n" << dec <<hes;
    cout <<"\n\nOktale Ausgabe :\n\n" << oct <<hes;
    
        getch();
    
     return 0;   
    }
    

    Vielen Dank



  • using namespace std;
    

    ist keine Funktion! Das ist eine Anweisung um den Namespace std global zu laden. Namespaces dienen dazu Code zu ordnen und Namenskonflikte auszuschließen. Alle Funktionen und Klassen, die standardmäßig bei C++ dabei sind, so wie cout oder cin liegen im namespace std.

    http://tutorial.schornboeck.net/namespace.htm <-- ach, lies besser mal hier 🙂



  • AlternativEnde schrieb:

    char stringtest[4000];
    int hes;
    hes == stringtest; // geht nicht ISO C++ forbids comparison between pointer and integer
    

    Einfacher Syntaxfehler.

    Du meintest wohl "hes = stringtest" aber auch das waere verkehrt.

    Da Du offensichtlich eine Hexadezimalzahl auslesen moechtest, kannst Du z.B. sscanf() aus der C-Standard-Bibliothek (stdio.h) verwenden:

    if ( sscanf( stringtest, "%x", &hes ) == 1 ) {
       printf( "meine hexadezimalzahl ist %x\n", hes );
    }
    else {
       printf( "in dieser Zeile ist am Anfang keine Hexadezimalzahl\n" );
    }
    

    Mit der C++-Standardbibliothek "iostream" (iostream) oder "strstream" (?) geht das bestimmt auch anders.

    hoffe, das hilft.



  • Oh je, dass ist in C++ ja alles schwerer, als ich dachte.
    Ich habe ein C beispiel gesehen in dem das ganze viel einfacher gelöst war auch über scanf, aber nun ja irgendwie muss das auch gehen. Dumm nur, dass die Bücher un Tutorials imemr nur auf die eifnachsten Beispiele eingehen und da nicht steht das int stringtest[49] nicht geht sondern nur mit char usw...



  • nach ISO/IEC 14882
    - Headerdateien haben keine Extension
    - Die alten c-Header Dateien werden durch ein vorangehendes c gekennzeichnet
    - Alle Elemente der Standard Bibliotek (u. a. iostream, cstdio) sind im Namensbereich std eingefaßt
    - C-Headerdateien können auch im alten Stil eingebunden werden (die Funktionen sind dann nicht in den std-Namensbereich eingefasst)

    #include <iostream> 
    #include <cconio> 
    #include <cstdio> 
    using namespace std;
    


  • Vertexwahn: Danke!! Bin noch nicht dazu gekommen, den aktuellen C++ Standard zu lesen. Gut zu wissen! 🙂

    (war vorher xyzxyzxyz)



  • Vertexwahn schrieb:

    #include <cconio>
    

    nur, dass conio.h auch keine alte headerdatei ist. cconio gibt es afaik nirgendwo, wenn nicht selbst zusammengeflickt. also entweder conio ganz rausnehmen und statt getch() am schluss von main cin.get() verwenden, oder bei conio.h und unportabilität bleiben.


Anmelden zum Antworten