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')))
也可以这样使用它,虽然这可能是愚蠢的。我是一个新秀......我确实试着找几个小时的路,但是因为我找不到任何东西,我就在这里。
编辑:需要返回找到的号码。很抱歉不予理会。 strong>
答案 0 :(得分:2)
直接答案是:不,您无法在strchr
中检查多个字符。该功能只是寻找一个特定的角色。
如果您需要搜索所有数字字符,因为您使用的是std::string
(为什么要对此进行别名?),您可以使用find_first_of()
。或者,更有可能find_first_not_of()
,检查diff.find_first_not_of("0123456789") == std::string::npos
。
然而,即使这不是一个好的解决方案 - 因为大概一旦你确认它是数字,你就会想要实际的数字。因此,使用std::stoi()
并确认它没有抛出并消耗整个字符串可能更直接。