我有两个字符串,一个是整数(例如字符串 strInt = “100”),一个是十六进制数字(例如字符串 strHex = “0x64”)。如果 strInt 和 strHex 的值相等(数字),比较最快/最好/安全的方法是什么?
需要排除 sprintf 以防止缓冲区溢出也不能使用 snprintf - 我的编译器不支持 c++ 11
谢谢大家
我有两个字符串,一个是整数(例如字符串 strInt = “100”),一个是十六进制数字(例如字符串 strHex = “0x64”)。如果 strInt 和 strHex 的值相等(数字),比较最快/最好/安全的方法是什么?
需要排除 sprintf 以防止缓冲区溢出也不能使用 snprintf - 我的编译器不支持 c++ 11
谢谢大家
用于strtol
将两者都转换为整数,然后进行比较。您可以使用strHex.c_str()
将 c++ 字符串转换为strtol
.
例子:
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);
我看不出这个sprintf()
orsnprintf()
函数是如何需要的。
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;