将包含整数的字符串与包含hex的字符串进行比较的最简单方法

时间:2013-03-16 11:59:57

标签: c++ string cstring stringstream hex

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

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

提前谢谢大家

2 个答案:

答案 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;