string -> int キャスト

ようするに、1文字ずつ cast したらいいのかもしれないんだけど。
で、あれですね、static_cast(char) の場合、1文字が、asciiコードになるので、「 - '0'」とかしてやると数値になるわけですね。

で、文字列をintにしてやろう、とか考えると、

#include <iostream>
#include <string>

using namespace std;

int to_i (const string& str) {
    int dec = 1;
    int r_int = 0;

    for (string::const_reverse_iterator it = str.rbegin(); it != str.rend(); it++) {
        r_int += (static_cast<int>(*it) - '0') * dec;
        dec *= 10;
        cout << dec << endl;
    }

    return r_int;
}


int main()
{
    string hoge("1024"), fuga("13334444444");

    cout << to_i(hoge) << endl;
    // INT_MAX 以上だとだめだ。。。!
    cout << to_i(fuga) << endl;
    return 0;
}

なんか愚直にやるとこんな感じなんだろうか。
愚直に。。


ふうむ。