#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
#includeusing 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
Комментариев нет:
Отправить комментарий