整数の文字列 (例: string strInt = "100") と 16 進数の文字列 (例: string strHex = "0x64") の 2 つの文字列があります。strInt と strHex の値が (数値的に) 等しい場合に比較する最も迅速で安全な方法は何ですか?
バッファ オーバーフローを防ぐために sprintf を除外する必要があります snprintf も使用できません - 私のコンパイラは C++ 11 をサポートしていません
よろしくお願いします
整数の文字列 (例: string strInt = "100") と 16 進数の文字列 (例: string strHex = "0x64") の 2 つの文字列があります。strInt と strHex の値が (数値的に) 等しい場合に比較する最も迅速で安全な方法は何ですか?
バッファ オーバーフローを防ぐために sprintf を除外する必要があります snprintf も使用できません - 私のコンパイラは C++ 11 をサポートしていません
よろしくお願いします
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);
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;