container überprüfen



  • hello,

    ich habe in eine map eine datei eingelesen und möchte jetzt bereiche in eine andere variable kopieren.
    das funktioniert auch alles bestens

    memcpy(&buffer[0],&datei["text01"][0],4);

    jedoch fiehl mir auf das bei

    memcpy(&buffer[0],&datei["text0x"][0],4); // man achte auf das text0x

    das programm keinerlei fehler ausgibt.
    den eintrag "text0x" habe ich ja nicht angelegt, müsste nicht irgendwie im laufenden betrieb das programm irgendwas melden das ich einen ungültigen index angegeben habe? ja bei arrays tuts das ja auch nicht, aber hier lege ich ja speziell ein assoziatives array an.



  • Also das memcpy irritiert und schaut erst mal falsch aus.

    Ich nehme nun mal an das Du std::map verwendest.

    Wenn Du einen Index angibst der nicht existiert mit op[] wird ein T() angelegt.
    Nach diesem Aufruf gibt es also ein key "text0x" mit einem leeren T.

    Wenn Du wissen musst ob das Element vorhanden ist musst Du find verwenden und auf deinemap.end() prüfen.

    Wenn das nicht dein Problem war, mal mehr Informationen, und überleg Dir mal ob Du das memcpy wirklich brauchst.


Anmelden zum Antworten