我有两个带有整数的字符串(例如字符串strInt =“100”)和一个带有十六进制数字的字符串(例如字符串strHex =“0x64”)。 如果strInt和strHex的值相等(数值),那么比较最快/最好/安全的方法是什么?
需要排除sprintf以防止缓冲区溢出 也不能使用snprintf - 我的编译器不支持c ++ 11
提前谢谢大家
答案 0 :(得分:3)
使用strtol
将两者转换为整数然后进行比较。您可以使用strHex.c_str()
将c ++字符串转换为strtol
所需的c样式字符串。
示例:
long int numHex = strtol(strHex.c_str(),NULL,16); // 16 is the base of the source
long int numInt = strtol(strInt.c_str(),NULL,10);
答案 1 :(得分:3)
我不知道如何需要sprintf()
或snprintf()
函数。
std::string a = "1337";
std::string b = "0x539";
std::stringstream as;
as.str(a);
std::stringstream bs;
bs.str(b);
int na, nb;
as >> na;
bs >> std::hex >> nb;
std::cout << a << " is " << (na == nb ? "equal" : "not equal") << " to " << b << std::endl;