C++ 数値を文字列に変換する複数の方法【int/double → string】

数値を文字列に変換する方法を紹介します。一般的なstd::to_stringを用いる方法の他に、より機能的なstd::stringstreamクラスを用いる方法があります。

目次

数値から文字列への変換

intdouble等の数値型を文字列型(std::string)に変換するには、std::to_string関数を用いるのが有効です。

// #include <string>
std::to_string(123); // "123"      (int to string)
std::to_string(3.1); // "3.100000" (double to string)
std::to_string(.1f); // "0.100000" (float to string)

std::to_string関数は#include <string>ヘッダに予め定義されています。

std::to_string 変換関数一覧

to_stringはオーバーロード関数であり、float型やlong型など、複数の型からの変換が可能です。

// 整数型
std::string to_string(int);
std::string to_string(unsigned int);
std::string to_string(long);
std::string to_string(unsigned long);
std::string to_string(long long);
std::string to_string(unsigned long long);
// 浮動小数点数型
std::string to_string(float);
std::string to_string(double);
std::string to_string(long double);

std::stringstream 経由で数値を文字列に変換

一般的なstd::to_string関数を用いる方法の他にstd::stringstreamクラスを用いる方法もあります。int型以外にも様々な数値型に対応できます。文字列への変換にはメンバ関数str()を用います。

// #include <sstream>
std::stringstream ss;
ss << 3.14;
std::string str = ss.str(); // "3.14"

std::cout等の入出力ストリームと同じ感覚で扱えるため、フォーマット済み文字列の作成にも便利です。

またchar型からの変換にも対応できます。

std::stringstream ss;
ss << 1 << '+' << 2.0 << "=" << 1 + 2;
std::string s = ss.str(); // "1+2=3"

char型をstring型に変換する方法

char型からの変換についてはto_string関数自体が対応していないため、別ページの「char型をstringに変換する」や、先程紹介した「# std::stringstream 経由で数値を文字列に変換」を参考にしてください。

参考までに、C++11であれば以下の方法での変換が可能です。詳しい説明は上記の別ページが参考になります。

char ch = 'a';
std::string str{ch}; // "a"
広告