我需要创建多个函数来检查输入是否有效。
这是我的一些代码:

bool IsValidRange(signed char s)
{
    bool isValid = true;
    if (!((s>=SCHAR_MIN)&&(s<=SCHAR_MAX)))
    {
        isValid = false;
    }
    return isValid;
}

bool IsValidRange(int s)
{
    bool isValid = true;
    if (!((s>=INT_MIN)&&(s<=INT_MAX)))
    {
        isValid = false;
    }
    return isValid;
}

我为此使用标题limits.h。我这样做正确吗?请注意,我只是一个初学者。希望大家都能理解。谢谢!

最佳答案

除浮点数外,以上模板不适用于有符号和无符号类型的混合。

template<typename RangeType, typename ValueType >
bool IsInRange( ValueType value )
{
    if( ! numeric_limits<RangeType>::is_integer )
    {
        return  (value > 0 ? value  : -value) <= numeric_limits<RangeType>::max();
    }

    if ( numeric_limits<RangeType>::is_signed ==
         numeric_limits<ValueType>::is_signed )
    {
        return value >= numeric_limits<RangeType>::min() &&
               value <= numeric_limits<RangeType>::max();
    }
    else if( numeric_limits<RangeType>::is_signed )
    {
        return value <= numeric_limits<RangeType>::max();
    }
    else
    {
        return value >= 0 && value <=  numeric_limits<RangeType>::max();
    }
}

10-08 14:05