数字の文字列を1つずつ取得したいので、数字を1つずつ取得する関数としてwhilewithのループを使用しています。cin.get()
しかしcin.get()、数字をcharsとして取得し、キャストを使用しようとしても、入力として取得した数値のASCII値ではなく、数値を変数に含めることができません。
cin.get数値を解析できません。手動で行うこともできますが、この関数はすでに存在しているのに、なぜわざわざ再実装する必要があるのでしょうか。*
int number;
std::cin >> number;
一般に、ストリーム演算子(<<および>>)はフォーマットされた出力と入力をistream::get処理しますが、一方、生の文字のみを抽出します。
*もちろん、この機能を再実装する必要がある場合は、何もありません。
数字から数値を取得するには、10進数の0〜9の文字コードが連続していることを利用できます。したがって、次の関数がそれらを隠すことができます。
int parse_digit(char digit) {
return digit - '0';
}