Strchr函数可以在c ++中找到字符串中的大量字母吗?

时间:2017-09-21 13:27:08

标签: c++ strchr

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 会返回字符的出现次数?

P.S :.我试过了

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

也可以这样使用它,虽然这可能是愚蠢的。我是一个新秀......我确实试着找几个小时的路,但是因为我找不到任何东西,我就在这里。

编辑:需要返回找到的号码。很抱歉不予理会。

1 个答案:

答案 0 :(得分:2)

直接答案是:不,您无法在strchr中检查多个字符。该功能只是寻找一个特定的角色。

如果您需要搜索所有数字字符,因为您使用的是std::string(为什么要对此进行别名?),您可以使用find_first_of()。或者,更有可能find_first_not_of(),检查diff.find_first_not_of("0123456789") == std::string::npos

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