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