VC++でC4996エラーが死ぬほど出ました。
C4996エラーはいつも無視してるんですけど、分量が多かったため原因追求。
結果boost::splitで出ていました。
解決法は以下
http://stackoverflow.com/questions/1301277/c-boost-whats-the-cause-of-this-warning
std::copyには、とある問題(間違って使用した場合には、バッファオーバーフローが発生?)があって、マイクロソフトがむやみに警告を出してるそうです。
上記URLにてbizmarkさんが言うには、
#if defined(_MSC_VER) && _MSC_VER >= 1400
#pragma warning(push)
#pragma warning(disable:4996)
#endif
boost::split(なんちゃら);
#if defined(_MSC_VER) && _MSC_VER >= 1400
#pragma warning(pop)
#endif
と書けば良いよと。_MSC_VERはVC++のバージョン情報が入ってるだけ。VC8.0以上の場合はじきますよと言っています。
正味コード内じゃなくてもヘッダに書いとけば良いじゃんと思いますけど、せっかく原因が分かったのでピンポイントで。
boost::splitは便利です。文字のスプリットをするコードは他にもstrtok_sがあるけど、こっちはちょっとめんどくさい。一瞬でvectorに切り分けてくれるので便利ですヨ。