-1

我有两个字符串,一个是整数(例如字符串 strInt = “100”),一个是十六进制数字(例如字符串 strHex = “0x64”)。如果 strInt 和 strHex 的值相等(数字),比较最快/最好/安全的方法是什么?

需要排除 sprintf 以防止缓冲区溢出也不能使用 snprintf - 我的编译器不支持 c++ 11

谢谢大家

4

2 回答 2

3

用于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);
于 2013-03-16T12:11:03.410 回答
3

我看不出这个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;
于 2013-03-16T12:14:10.450 回答