【C++】文字列から数値に変換する方法【備忘録】

ABC126のB問題の解説に知らない方法が書いてあったのでメモ

s[0] = '5';
num = s[0] - '0';
//num = 5になる

そのまま検索したらこのページが出てきた

よくわからないが,数値の0-9は文字コード上では連番で表現されることを利用しているらしい.
目的の数値の文字コード'0'文字コードの差分を取ることで,その値を数値として取り出しているっぽい.

使用例

string s = '1234';
//上の2文字を2桁の数字として取り出す
num = (s[0] - '0')*10 + (s[1] - '0');

間違いがあれば教えてください.