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