0

私の C++ MUD ゲームでは、プレイヤーが呪いの言葉を入力できないようにしたいと考えています。例は必要ありません。だから私はこのようなことを試しました:

vector<string> vulger = { "You know what goes in here");

void Player::SendString(const std::string& p_string)
    {
for (vector<string>::iterator it = vulger.begin(); it != vulger.end(); ++it)
    {
        if (!p_string.compare(*it) || !p_string.find(*it))
        {
            //Testing what words are been neglected by the if statement.
            //cout << *it;
                Conn()->Protocol().SendString(*Conn(), p_string + newline);
        }
    }

    }

しかし、これが行うことは、ネットワークに送信される文字列をループすることだけです。お知らせも含め。

誰かが間違っていることを確認したり、何か提案したりできますか?

4

2 に答える 2

0

の戻り値を bool として扱っていますがstd::string::find、実際には、npos見つからない場合の特別な魔法の値で文字列にオフセットを返します。

if (my_string.find("foo") == std::npos) {
   // foo is NOT in my_string
} else {
   // foo is in my_string
}
于 2014-12-01T21:19:05.933 に答える