17

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

しかしcin.get()、数字をcharsとして取得し、キャストを使用しようとしても、入力として取得した数値のASCII値ではなく、数値を変数に含めることができません。

4

1 に答える 1

35

cin.get数値を解析できません。手動で行うこともできますが、この関数はすでに存在しているのに、なぜわざわざ再実装する必要があるのでしょうか。*

int number;
std::cin >> number;

一般に、ストリーム演算子(<<および>>)はフォーマットされた出力と入力をistream::get処理しますが、一方、生の文字のみを抽出します。


*もちろん、この機能を再実装する必要がある場合は、何もありません。

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

int parse_digit(char digit) {
    return digit - '0';
}
于 2012-11-16T18:01:48.273 に答える