C++ Funktion um Text in Binärcode zu übersetzen gibt unerwartete Rückgabewerte.



  • Der Unterschied zwichen operator[] und .at() ist mir schon klar. Manni66 bezieht sich allerdings auf den Ursprungspost wo es kein .at() gibt.



  • sebi707 schrieb:

    manni66 schrieb:

    So wie es im Ursprungspost steht ist es richtig falsch, da auf einen Index ausserhalb des gültigen Wertebereichs zugegriffen wird.

    Wo? Der operator[] erlaubt auch den Zugriff auf den Null Terminator.

    Wenn es C++ 11 ist, ja. Sonst nur für die const Version, die hier nicht benutzt werden dürfte.

    Ob der gcc das in der "alten" libstd für C++ 11 schon richtig implementiert?



  • manni66 schrieb:

    Ob der gcc das in der "alten" libstd für C++ 11 schon richtig implementiert?

    Ja gut. Ich dachte C++11 kann man mittlerweile voraus setzen. Der ältere Standard garantiert zwar nichts aber mich würde schon extremst wundern wenn irgendeine Standardlibrary da jemals irgendwas komisches gemacht hat. Der Null Terminator muss dort ja eh stehen für den operator[]() const .



  • manni66 schrieb:

    Wenn es C++ 11 ist, ja. Sonst nur für die const Version, die hier nicht benutzt werden dürfte.

    Ernsthaft jetzt, bei der const Version war das erlaubt? Ich dachte immer auf den Null-Terminator kann man sich nur verlassen wenn man .c_str() verwendet, und sonst genau nirgends.



  • hustbaer schrieb:

    Ernsthaft jetzt, bei der const Version war das erlaubt? Ich dachte immer auf den Null-Terminator kann man sich nur verlassen wenn man .c_str() verwendet, und sonst genau nirgends.

    Hat mich auch gewundert als ich letztens zu std::string was im Standard nachgeschlagen hab. Noch was eventuell Neues für dich wenn du nur bei c_str an den Nullterminator glaubtest: Die data Memberfunktion liefert genau das gleiche wie c_str ! Im Standard gibts nichtmal eine separate Beschreibung für beide...



  • Mh OK das scheint immerhin erst seit C++11 so zu sein...



  • Ja, das mit data ist ne C++11 Sache, und die war mir schon bekannt. Ich beziehe mich auf C++98 bzw. 03.



  • Okay danke jetzt weiß ich schonmal ungefähr was ich tun sollte, wenn ich soweit bin, werde ich versuchen das mit einem Algorithmus zu lösen. Ich danke euch auf jeden Fall für eure Antworten.

    Ps: Wenn ich z. B. auf dieser Website Text in Binärcode übersetzen lassen will, kommt doch auch eine Null als erste Zahl ?

    Mit freundlichem Gruß 😉



  • Tha_Coralis schrieb:

    Ps: Wenn ich z. B. auf dieser Website Text in Binärcode übersetzen lassen will, kommt doch auch eine Null als erste Zahl ?

    Hat irgendwer behauptet, in Binärzahlen dürfen keine führende Nullen vorkommen?



  • in C/C++

    123 = dezimal
    0x123 = hexadezimal
    0124 = oktal (wird an der fuehrenden 0 erkannt)
    0b01100 = binär (0b... ab C++14 verfuegbar)



  • Im übrigen sind Zahlen die mit 0 beginnen keine binären Zahlen sondern Zahlen zur Basis 8! Daher kriegst du auch wohl deine komische Ausgabe.

    Wenn ich das richtig verstanden habe.



  • Tha_Coralis schrieb:

    Im übrigen sind Zahlen die mit 0 beginnen keine binären Zahlen sondern Zahlen zur Basis 8! Daher kriegst du auch wohl deine komische Ausgabe.

    Wenn ich das richtig verstanden habe.

    Aus deinen Äußerungen lässt sich schließen, dass du nicht wirklich verstanden hat, worum es geht. Aber ja, eine Zahl, die im C++-Quellcode steht (number literal) und mit einer 0 beginnt, ist eine Oktalzahl.


Anmelden zum Antworten