数値を文字列に変換する方法を紹介します。一般的なstd::to_stringを用いる方法の他に、より機能的なstd::stringstreamクラスを用いる方法があります。
目次
- 数値から文字列への変換(
std::to_stringによる変換) - std::stringstream 経由で数値を文字列に変換
- char型をstring型に変換する方法
数値から文字列への変換
intやdouble等の数値型を文字列型(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"