C++の数字と文字列の変換操作

あとからサッと確認するための、ごくシンプルなコードを記載。

その1 - 数字を文字列に変換

#include <iostream>
#include <string>
#define SIZE(arg) (sizeof(arg) / sizeof(arg[0]))
using namespace std;

int main(void)
{
    string str = "";
    int x[] = {11, 22, 33, 44, 55};
    for(unsigned int i = 0; i < SIZE(x); i++) {
        char ch[sizeof(int)];
        sprintf(ch, "%d", x[i]);
        str += string(ch) + ", ";
    }
    cout << str << endl;
    return 0;
}

この出力結果は、

    11, 22, 33, 44, 55, 

となる。

その2 - 文字列を数字に変換

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    string str = "1234567890";
    int num = 0;
    for(unsigned int i = 0; i < str.size(); i++) {
        num += char(str[i]) - '0';
    }
    cout << num << endl;
    return 0;
}

この出力結果は、

    45

となる。(1 ~ 9 の総和)


これをちょっと工夫して、

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    string str = "1234567890";
    int num = 0;
    for(unsigned int i = 0; i < str.size(); i++) {
        num += (char(str[i]) - '0') * (int)pow(10.0f, (float)(str.size() - 1 - i));
    }
    cout << num << endl;
    return 0;
}

のようにすると、出力結果が

1234567890

となり、元の文字列を再現できる。