使用C++ostringstream
和string
:
bool hasHexDigits(int number)
{
std::ostringstream output;
output << std::hex << number;
return output.str().find_first_of("abcdefABCDEF") != string::npos;
}
EDIT:其他解决办法,不使用溪流。 它提高了业绩(没有分支机构)和记忆明智(没有拨款),但对于你的“家务”来说可能过于先进:
template<int I> struct int_to_type
{
static const int value = I;
};
inline bool __hasHexCharacters(int number, int_to_type<0>)
{
return false;
}
template <int digitsLeft>
inline bool __hasHexCharacters(int number, int_to_type<digitsLeft>)
{
return ((number & 0xF) > 9) | __hasHexCharacters(number >> 4, int_to_type<digitsLeft-1>());
}
inline bool hasHexCharacters(int number)
{
return __hasHexCharacters(number, int_to_type<2 * sizeof(int)>());
}