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')))
использовать это тоже так, хотя это было, вероятно, глупо. Я настоящий новичок … Я пытался часами искать дорогу, но так как я ничего не мог найти, я здесь.
РЕДАКТИРОВАТЬ: он должен вернуть номер, который он находит. Извините, что оставил это.
Прямой ответ: нет, вы не можете проверить наличие нескольких символов в strchr
, Эта функция просто ищет одного конкретного символа.
Если вам нужно найти все числовые символы, так как вы используете std::string
(почему вы это псевдоним?), вы можете использовать find_first_of()
. Или, более вероятно, find_first_not_of()
, проверяя это diff.find_first_not_of("0123456789") == std::string::npos
,
Тем не менее, даже это не очень хорошее решение — так как, предположительно, когда вы убедитесь, что оно числовое, вам понадобится фактическое число. Так что это может быть более прямым, просто использовать std::stoi()
и убедитесь, что он не выбросил и не поглотил всю строку.
Других решений пока нет …