Есть ли функция для получения целочисленного ввода? - PullRequest
0 голосов
/ 05 января 2011

Это что-то особенное. Я хочу иметь возможность получить целое число от пользователя, используя функцию, а не Cin. Я пробовал несколько разных вещей, но ни одна из них не сработала, поэтому я просто написал свою собственную функцию. Это действительно сбивает меня с толку, хотя, кажется, что-то, что уже будет иметь функцию. Вот оно:

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

Я пытался использовать cin.get (), но это возвращает число ASCII для целого числа. Все функции getline () предназначены для строк. Просто не имеет смысла, что эта функция не существует! Если вам известна какая-либо функция или встроенный эквивалент, который может быть передан в качестве параметра функции, сообщите мне.

Ответы [ 3 ]

2 голосов
/ 05 января 2011

Нет стандартной функции, которая делает то, что вы хотите.

2 голосов
/ 05 января 2011

Вы уже используете функцию, когда делаете то, что отправили.Альтернативный синтаксис для вызова 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);
    }
0 голосов
/ 05 января 2011

C ++ использует операторы (в данном случае >>) для получения ввода в отличие от Java, который использует функции.Вы можете создать свой собственный анализатор чисел, но в стандартном C ++ его нет.

...