2011-01-05 12 views
0

これは特定のものです。私は、cinではなく関数を使ってユーザーから整数を取得できるようにしたいと考えています。 私はいくつかの異なることを試みましたが、どれもうまくいかないので、私は自分自身の機能を書いています。それは実際に存在する機能を持つもののように思えるので、私をうんざりにしてしまいます。ここにあります:整数入力を取得する関数はありますか?

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

私はcin.get()を使用しようとしましたが、整数のアスキー番号を返します。 getline()関数はすべて文字列用です。この関数が存在しないというのは意味がありません!関数へのパラメータとして渡すことができる関数またはインライン関数がわかっている場合は、私に教えてください。

+4

は? –

+6

あなたが知っている '、'はここの関数です。 –

+0

なぜこの関数が存在するはずだと思いますか?あなた自身で書くのは簡単です。あなたの機能は非常に特殊であり、それを書く機能はすぐに利用できることに注意してください。 C++標準ライブラリはどれくらいの大きさだと思いますか? –

答えて

0

C++では、関数を使用するJavaとは異なり、演算子(この場合は>>)を使用して入力を行います。独自の数値パーサーを構築することはできますが、標準のC++でビルドされたものはありません。

2

投稿した内容を行うときに、既に関数を使用しています。これが明確になりoperator>>への呼び出しのための代替構文:

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

ここでのVisual C++のv10のヘッダからその関数のコードです:CINと間違っている何

_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

さて、私が実際に探しているのは、上記の私が行っていることを全体として行う既存の機能です。そのようにすれば、次のようなパラメータとして渡すことができます: –

+0

for(int num = getInt(); num!= 42; num ++) –

+1

このループは私にとっては意味がありません。演算子>>(num)&& num!= 42) '? –

関連する問題