つらねの日記

プログラムの進捗やゲームをプレイした感想などを書き連ねる日記。

c++でto_stringが使えないときの対処法について

前置き

OSXで書いていたときは問題なく動いていたソースコードWindowsCygwinで動かそうとしたら,
'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みたいに一個一個丁寧に書いてあるため,上手いことオーバーロードになっていて通るらしい.