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
となり、元の文字列を再現できる。