Strchr 函数可以在 C++ 中的字符串中找到多个字母吗?

Can Strchr function find numerous letters in a string in c++?

Diff FBullAndCow::EDifficulty(std::string diff) const
{
    if ((diff.length() > 1))
    {
        return Diff::Not_Number;
    }
    else if (!strchr(diff.c_str(), '3' || '4' || '5' || '6' || '7' || '8'))
    {
        return Diff::Not_Number;
    }
    return Diff::Ok;
}

是否可以使用 strchr 在字符串中找到多个字符? 我尝试了上面的方法,但它不起作用。我想这是因为 strchr returns 出现了一个字符?

P.S:.我试过了

    if ((!strchr(diff.c_str(), '3')) || (!strchr(diff.c_str(), '4')))

也可以这样使用它,尽管它可能很愚蠢。我完全是菜鸟...我确实尝试了几个小时寻找方法,但是由于找不到任何东西,所以我在这里。

编辑:它需要 return 它找到的数字。抱歉遗漏了这个。

直接的答案是:不,您不能检查 strchr 中的多个字符。该函数只查找一个特定字符。

如果您需要搜索所有数字字符,因为您使用的是 std::string(为什么要使用别名?),您可以使用 find_first_of(). Or, more likely, find_first_not_of(),检查 [=14] =].

然而,即使这也不是一个好的解决方案 - 因为大概一旦您验证它是数字,您就会想要实际的数字。因此,仅使用 std::stoi() 并验证它没有抛出并消耗整个字符串可能更直接。