2012-11-16 10 views
12

数字の文字列を1つずつ取得したいので、whileループ とcin.get()を1桁ずつ使用する関数を使用しています。cin.getを使用して整数を取得する

しかしcin.get()char sと数字を取得し、私は私の変数がnumrical値と、私は、入力として取得番号のないASCII値 を含ませることはできません キャストを使用しようとしているにもかかわらず。

答えて

20

cin.get数字を解析できません。手動で行うこともできますが、なぜならこの関数は既に存在するので、この関数を再実装するのはなぜですか?一般に*

int number; 
std::cin >> number; 

、ストリーム演算子(<<>>)は一方フォーマット出力と入力、istream::getの世話をすると、生の文字のみを抽出します。もちろん


*、あなたがこの機能を再実装するを持っている場合は、それには何もありません。

数字の文字から数値を取得するには、0-9の10進数の文字コードが連続していることを利用できます。したがって、以下の関数はそれらを隠すことができます:

int parse_digit(char digit) { 
    return digit - '0'; 
} 
+0

私は講義で学んだことのない関数を使用することはできません。 – Quaker

+8

@Eranああ、すごく馬鹿だ。さて、答えを修正しましょう。 –

+0

'static_cast'は必要ありません。コンパイラは 'char'値を伝えずに' int'に変換します。 –

関連する問題