-1

整数の文字列 (例: string strInt = "100") と 16 進数の文字列 (例: string strHex = "0x64") の 2 つの文字列があります。strInt と strHex の値が (数値的に) 等しい場合に比較する最も迅速で安全な方法は何ですか?

バッファ オーバーフローを防ぐために sprintf を除外する必要があります snprintf も使用できません - 私のコンパイラは C++ 11 をサポートしていません

よろしくお願いします

4

2 に答える 2

3

strtol両方を整数に変換してから比較するために使用します。を使用strHex.c_str()して、c++ 文字列から で必要な 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 に答える