是否有检索整数输入的函数?

时间:2011-01-05 17:22:25

标签: c++ function input integer

这个有点具体。我希望能够使用函数而不是cin从用户检索整数。 我尝试了几种不同的东西,但似乎都没有用,所以我最后编写了自己的功能。它确实令我感到困惑,因为它似乎已经存在功能。这是:

int getInt()
{
   int num;
   cin >> num;
   return num;
}

我尝试过使用cin.get(),但是返回整数的ascii数。 getline()函数全部用于字符串。这个功能不存在是没有意义的!如果您知道可以作为参数传递给函数的任何函数或内联等效函数,请告诉我。

3 个答案:

答案 0 :(得分:2)

没有标准功能可以做你想要的。

答案 1 :(得分:2)

当您执行发布的操作时,您已经在使用某个功能。调用operator>>的替代语法使其更清晰:

   int num;
   cin.operator>>(num);
   return num;

以下是Visual C ++ v10标题中该函数的代码:

_Myt& __CLR_OR_THIS_CALL operator>>(int& _Val)
    {   // extract an int
    ios_base::iostate _State = ios_base::goodbit;
    const sentry _Ok(*this);

    if (_Ok)
        {   // state okay, use facet to extract
        long _Tmp = 0;
        const _Nget& _Nget_fac = _USE(ios_base::getloc(), _Nget);

        _TRY_IO_BEGIN
        _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
            *this, _State, _Tmp);
        _CATCH_IO_END

        if (_State & ios_base::failbit
            || _Tmp < INT_MIN || INT_MAX < _Tmp)
            _State |= ios_base::failbit;
        else
            _Val = _Tmp;
        }

    _Myios::setstate(_State);
    return (*this);
    }

答案 2 :(得分:0)

C ++使用运算符(在本例中为&gt;&gt;)来获取输入,而不像使用函数的Java。您可以构建自己的数字解析器,但没有一个内置标准C ++。