文字列から数値化

C/C++で文字列から数値化するには、基本的にatoi関数を使用することになるのが普通だと思うが、ただatoi関数だと桁あふれがあったかどうか分からないのが難点である。現在、一般的なコンパイラでは、intは32ビットとして扱われるので、atoi関数では-2147483648から2147483647までしか、数値化することができない。このため、例えば"10000000000"をatoi関数に入れると、桁あふれして、多分、1410065408になるはずである(間違っているかもしれない…)。このように、文字列から数値化という処理は簡単なものではない。
では、どうやるのが一番安全なのか? 一番、良い解決策は現在思案中だが、単純な可決策としては、atoi関数の代わりに、64ビット整数に変える_atoi64関数を使ってやる方法がある。が、これも完全ではないので、やはり何らかの方法を考える必要があると思われる。