数値を文字列に変換する方法を紹介します。一般的な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"