Texthexwert in integer umwandeln



  • Hallo!

    Aus einer Textdatei lese ich verschiedene Hexwerte als std::string ein.
    Wie kann ich diesen string nun in einen Integer bekommen, normalerweise ist das ja kein Problem

    int value = atoi(line.c_str());
    

    Nur wenn in line jetzt "0x31" steht funktioniert das ganze nicht mehr, wer hilft mir 🙂 ?



  • Sieh dir mal strtoul an.
    Kurt



  • ohne mich jetzt drauf festzunageln...
    es gibt do diesen manipulator std::hex. Funktioniert der auch für istreams?
    Wenn ja, dann könnte doch das folgende funktionieren:

    #include <fstream>
    #include <sstream>
    #include <string>
    
    int read(std::ifstream& is)
    {
        int r;
        is>>hex>>r;
        return r;
    };
    
    //oder
    int read(const std::string s)
    {
        std::istringstream iss(s);    //geht das so?
        iss>>hex>>r;
    };
    

    Aber wie gesagt, keine ahnung ob das geht.



  • letzte Variante funktioniert einwandfrei, die davor hab ich nicht probiert. danke 🙂


Anmelden zum Antworten