ABC462A - Secret Numbers

考え方

入力は文字列が $1$ つなので、string 型の変数を $1$ つ用意し、cin で入力を受け取る。

文字列の中身を $1$ 文字ずつ見ていきたいので、forループを用意する。
それぞれの文字について、if文で以下を行えばよい。

数字かどうかの判定は、文字が '0' 以上 '9' 以下かどうかで行える。

if (s.at(i) >= '0' && s.at(i) <= '9') {
  result += s.at(i);
}

また、標準ライブラリ関数 isdigit を用いてもよい。

if (isdigit(s.at(i))) {
  result += s.at(i);
}

最後に、作った答え用の文字列を cout で出力すればよい。

入力例1での動作

入力を受け取る。

s: "abc462"

$0$ 文字目をチェックする。
'a' は数字でないので何もしない。

s: "abc462"
result: ""

$1$ 文字目をチェックする。
'b' は数字でないので何もしない。

s: "abc462"
result: ""

$2$ 文字目をチェックする。
'c' は数字でないので何もしない。

s: "abc462"
result: ""

$3$ 文字目をチェックする。
'4' は数字なので答え用の文字列に加える。

s: "abc462"
result: "4"

$4$ 文字目をチェックする。
'6' は数字なので答え用の文字列に加える。

s: "abc462"
result: "46"

$5$ 文字目をチェックする。
'2' は数字なので答え用の文字列に加える。

s: "abc462"
result: "462"

最終的に、result を出力すればよい。

注意点

特になし。

別解

ループ内で「今何番目であるか」を使わないので、範囲for文を使ってもよい。

for (char c : s) {
  if (isdigit(c)) {
    result += c;
  }
}

いちいち .at(i) を書く手間が省けるし、文字列の長さを自分で取得するのも不要になる。