I have a simple problem with a conversion:
std::string str = "0xC0A80A02"
and I need to convert it to DWORD.
I searched on the web and found some solution but none seems to work.
try1:
DWORD m_dwIP = atol(str.c_str());
try2:
std::istringstream ss(str.c_str());
ss >> m_dwIP;
try3:
sscanf (str.c_str(),"%u",str,&m_dwIP);
Note the string stores the value in hexa .
Thanks,
Gabriel
Assuming sizeof(DWORD) == sizeof(unsigned long)
, this should do:
#include <cstdlib>
DWORD m_dwIP = std::strtoul(str.c_str(), NULL, 16);
See http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/.
Note that this is usable for both C and C++ (strip of the std::
and c_str()
and change <cstdlib>
to <stdlib.h>
but this should be pretty obvious).