c ++整数-> std :: string変換。シンプルな機能?
質問
問題:整数があります。この整数は、stl :: string型に変換する必要があります。
過去には、変換を行うために stringstream
を使用しましたが、これはちょっと面倒です。 Cの方法は sprintf
を実行することですが、タイプセーフなC ++メソッドを実行したいです。
これを行うより良い方法はありますか?
これは私が過去に使用したstringstreamアプローチです:
std::string intToString(int i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
もちろん、これは次のように書き換えることができます。
template<class T>
std::string t_to_string(T i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
ただし、これはかなり「重い」実装であるという考えがあります。
Zanは、呼び出しは非常に優れていると指摘しました:
std::string s = t_to_string(my_integer);
とにかく、もっと良い方法は...いいでしょう。
関連:
解決
現在C ++ 11にあります
#include <string>
string s = std::to_string(123);
参照へのリンク: http://en.cppreference.com/w/cpp/string/basic_string / to_string
他のヒント
前述のように、boost lexical_castをお勧めします。それはかなりいい構文を持っているだけでなく:
#include <boost/lexical_cast.hpp>
std::string s = boost::lexical_cast<std::string>(i);
また、いくつかの安全性も提供します:
try{
std::string s = boost::lexical_cast<std::string>(i);
}catch(boost::bad_lexical_cast &){
...
}
実際には、標準ではありません。一部の実装には非標準のitoa()関数があり、Boostのlexical_castを調べることができますが、標準に固執する場合は、stringstreamとsprintf()を選択することができます(もしあれば、snprintf())
所属していません StackOverflow