Zeiger und immernochnicht verstanden!



  • also das mit dem string hab ich mal versucht, scheint auch zu funktionieren:

    int main(int argc, char* argv[])
    {
    string str = "ABCD";
    unsigned char* ptr;
    for (int i = 0;i<str.length();i++)
     {
     *ptr=str[i];
     cout<<*ptr<<endl;
     }
    getch();
            return 0;
    }
    

    nun werd ich nochmal das mit dem long probieren!

    Bei dem long brauch ich aber auch einen zeiger oder?
    Auch den char zeiger? (Weil in aufgabenstellung ja nur von charzeiger die rede ist)!



  • Ja nen char-Zeiger, sonst gibts die HEX-Zahlen die im Speicher stehen..;)



  • so also das long geht nich so richtig!

    int main(int argc, char* argv[])
    {
    long var = 0x12345678;
    char *ptr = reinterpret_cast<char*>(&var);
    for(int i = 0;i<4;i++)
    {
    cout<<ptr[i]<<endl;
    }
    getch();
            return 0;
    }
    

    aber er gibt mir den speicherinhalt aus, aber nich als 78 etc...eben nur als x!



  • Machs so:
    char *ptr;
    ptr = (char 😉 &var;
    Damit sagst du ihm das er egal was da steht, es auf jeden Fall Buchstaben sind.



  • ich will ja aber eben KEINE buchstaben ausgeben, sondern das:

    0x78,0x56,0x34,0x12
    


  • Wirklich? Dafuer muesstust du die flags im ofstream aendern..
    Was willst du damit ueberhaupt bezwecken?



  • bei der string aufgabe kannst du auch

    den zeiger auf string zeigen lassen dann

    for schleife von int i = 0 bis size

    den zeiger++ machen und

    cout zeiger // ausgeben

    ist geschmackssache

    zu der long aufgabe

    du musst wie gesagt die aufgabenstellung lesen 🙄

    da steht extra dran das du die FLAG nehmen sollst und ich sagte es auch mehrmals

    in deinem long bsp hast du NULL etwas mit FLAGS gemacht. Tja so kannst dann auch nichts werden. schau dir FLAG bsp an und da findest schon was du brauchst, etwas rumprobieren und voila es geht 🙂

    viel spass



  • Die cout-Flags sind nich soo einfach oder??

    Uup, sry hab nur nicht das richtige auf anhieb gefunden..



  • hm...hab ios::hex, ios::dec, ios::alles probiert, es kommt immer nur x bla bla bla!

    iomanip inkludiert!
    cout.setf() und cout<<hex etc... genommen!

    hm...



  • PS:
    @Newkid: aber meine stringmethode is nicht schlechter oder??



  • Hmm... wir haben gelernt, dass char (Zeichen) nur 8 Bit (1 Byte) ist. Dieses kann man als Zahl anzeigen lassen. Um eine Zahl als hex anzuzeigen muss man den hex-flag setzen. Dass man casten kannst, hast du ja selbst schon herausgefunden, also ergibt sich was aus deinem Code? - Richtig, das hier:

    int main(int argc, char* argv[])
    {
    long var = 0x12345678;
    char *ptr = reinterpret_cast<char*>(&var);
    for(int i = 0;i<4;i++)
    {
    cout<<hex<<(int)ptr[i];//und ohne endl, weil du willst die zeichen ja hintereinander, nicht untereinander.
    if(i<3) cout<<", "; // Damit es auch schön mit Komma getrennt ist...
    }
    cout<<endl; // Aber zum Schluss natürlich endl ;)
    getch();
            return 0;
    }
    


  • hm....ich bin auf das hier gekommen:

    int main(int argc, char* argv[])
    {
    long var = 0x12345678;
    char *ptr = reinterpret_cast<char*>(&var);
    cout.flags(ios::hex|ios::showbase);
    for(int i = 0;i<4;i++,ptr++)
    {
    cout<<static_cast<int>(*ptr)<<endl;
    
    }
    getch();
            return 0;
    }
    

    is das falsch?


Anmelden zum Antworten