Может ли функция Strchr найти множество букв в строке в 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 возвращает вхождения персонажа?

P.S :. Я старался

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

использовать это тоже так, хотя это было, вероятно, глупо. Я настоящий новичок … Я пытался часами искать дорогу, но так как я ничего не мог найти, я здесь.

РЕДАКТИРОВАТЬ: он должен вернуть номер, который он находит. Извините, что оставил это.

1

Решение

Прямой ответ: нет, вы не можете проверить наличие нескольких символов в strchr, Эта функция просто ищет одного конкретного символа.

Если вам нужно найти все числовые символы, так как вы используете std::string (почему вы это псевдоним?), вы можете использовать find_first_of(). Или, более вероятно, find_first_not_of(), проверяя это diff.find_first_not_of("0123456789") == std::string::npos,

Тем не менее, даже это не очень хорошее решение — так как, предположительно, когда вы убедитесь, что оно числовое, вам понадобится фактическое число. Так что это может быть более прямым, просто использовать std::stoi() и убедитесь, что он не выбросил и не поглотил всю строку.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]