std::string::compare を使うのをやめて、std::equal を使うように

してみましたがどうですか。

`compare(hogehoge) == 0` の`0` ってなんだ って初見思ったので……