c++でto_stringが使えないときの対処法について
前置き
OSXで書いていたときは問題なく動いていたソースコードをWindowsのCygwinで動かそうとしたら,
'to_strin' was not declared in this scope
とかいうエラーでコンパイルに失敗した.
std::to_string()だし,ないってことはないんじゃない?と思ったけど,現に使えなかった.
というわけで,to_string()が使えなかったときの対処法について調べた.
対処
http://stackoverflow.com/questions/12975341/to-string-is-not-a-member-of-std-says-so-ghttp://stackoverflow.com/questions/12975341/to-string-is-not-a-member-of-std-says-so-g#answer-20861692
この回答をちょっと変更して使った.
template < typename T > std::string to_string( const T& n ) { std::ostringstream stm ; stm << n ; return stm.str() ; } }
これを適当なところに記入しておくだけであら不思議.プログラムの方を変えずにto_string()が使えるようになりました.
to_stringが複数定義されているとかにならないのかと思ったが,std::to_stringの引数はintとかfloatみたいに一個一個丁寧に書いてあるため,上手いことオーバーロードになっていて通るらしい.