C++ Boost boost::split | らいとういんぐ

らいとういんぐ

-Light Wings- Ж gameproject

横スクロールしゃぼん玉アクションゲーム 「しゃぼんふぁんたじあ」 制作中

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に切り分けてくれるので便利ですヨ。