null 文字で分割する
あまりないと思いますが MULTI_SZ と格闘する時とかは null 文字で文字列を分割したい、ということがあるかもしれません。
一々 std::find 使って書くのは面倒なので、boost が使えるなら boost::algorithm::split を使っておきましょう。
しかし何も考えずに以下のようなコードを書くとよくない。
boost::algorithm::split(reuslt, str, boost::is_any_of("\0"));
is_any_of が null 文字を文字列終端として見てしまうからですね。適当な predicator でごまかしましょう。まあ is_from_range とかでいいと思います。
boost::algorithm::split(reuslt, str, boost::is_from_range('\0', '\0'));
実装考えれば確かに、という感はありますが、ちょっとした罠ですね。他にも null 文字含むリテラル使って書くようなパターンで同じ問題が発生するはずなので、気をつけましょう。
おしまい。