Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Найти все цифры в строке

#cpp #регулярные_выражения


как найти все цифры в строке,с помощью какого метода если есть такой

    #include 
    #include 
    #include 

    using namespace std;

    int main()
    {
        string str = "f52jnjn 7 8 h8";
        cmatch result;
        regex reg("([0-9])");
        if (regex_search(str.c_str(), result, reg)) {
            for (int i = 0; i < str.size(); i++) {
                cout << result[i] << endl;
            }
        }
    }


данный метод ищет только первое совпадение,но как найти все совпадения
    


Ответы

Ответ 1



На мой взгляд самый простой вариант std::isdigit - он проверит значение char на то является ли оно числом в нашем представлении или нет и вернет bool : #include #include #include #include #include int main() { std::string str{"f52jnjn 7 8 h8"}; std::vector res; for (unsigned char ch : str) { if (std::isdigit(ch)) { res.push_back(ch); } } if (res.empty()) { return -1; } auto shell_it(std::ostream_iterator{std::cout, "\n"}); std::copy(std::begin(res), std::end(res), shell_it); return 0; }

Ответ 2



#include using namespace std; int main() { char ch[10]; cin >> ch; for (int i = 0; i < 10; i++) { if ((ch[i] > 48) && (ch[i] < 57)) { cout << ch[i] << endl; } } return 0; } более простой вариант размер массива можно по желанию увеличить

Ответ 3



Используй regex_iterator или regex_token_iterator

Комментариев нет:

Отправить комментарий