« インライン化できない関数のラッパー関数などで関数呼び出しのオーバーヘッドを減らしたい | トップページ | スマホのSDカードが破損した。復旧を試みる »

2016-03-21

StrinToIntのような文字列を整数に変換する関数を実装してみる

Abstract1176852_640

ちなみにatoiなど標準ライブラリーなどの関数を使うべきですが、純粋に文字列をint型にするのではなく、なにか似たような処理をする時のヒントになればと思います。

文字列の先頭から一文字取得して、数字に変換する。取得した文字を文字列から取り除く。文字列にまだ文字があれば、取得した数値を10倍する。

#include <iostream>
#include <string>

using namespace std;

int string_to_int(string s)
{
    int result = 0;
    while (s.length() != 0)
    {
        result += s[0] - '0';
        s = s.substr(1, s.length() - 1);
        if (s.length() != 0)
        {
            result *= 10;
        }
    }
    return result;
}

int main()
{
    string s = "123";
    cout << string_to_int(s) + 111 << endl;  // 234
    return 0;
}


アルゴリズムの基本




|

« インライン化できない関数のラッパー関数などで関数呼び出しのオーバーヘッドを減らしたい | トップページ | スマホのSDカードが破損した。復旧を試みる »

C/C++」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: StrinToIntのような文字列を整数に変換する関数を実装してみる:

« インライン化できない関数のラッパー関数などで関数呼び出しのオーバーヘッドを減らしたい | トップページ | スマホのSDカードが破損した。復旧を試みる »