Wyrażenia regularne - wyszukiwanie liczb

0

Chcę wyszukać wszystkie liczby w ciągu: "50 12 40 12"
Pierwszy raz próbuje w praktyczny sposób użyć wyrażeń regularnych, wcześniej napisałbym po prostu funkcję, która przelatuje ciąg i sprawdza czy znak jest liczbą, jeżeli tak to zapisuje ów znak do bufora, a jeżeli nie, to pomija itd
Programik:

#include <iostream>
#include <string>
#include <regex>

int main()
{
	std::string str = "50 12 40 12";

	std::tr1::cmatch res;

	std::tr1::regex rx("((\\d\\d)|(\\d\\d\\s))");

	std::tr1::regex_search(str.c_str(), res, rx);


	for (auto i = 0; i < res.size(); i++)
	{
		std::cout << res[i] << std::endl;
	}

	std::cout << res.size();

	system("Pause");

	return 0;
} 

Jako wynik otrzymuję:
50
50
50

A chciałbym wszystkie liczby. Próbowałem już wielu sposób, to albo otrzymuję to samo, albo pusty wynik, albo samo 50.
Możecie mi podpowiedzieć co robię źle? Albo chociaż podesłać dobry artykuł, gdzie wyjaśnione są dobrze wyrażenia regularne?

2

Co robisz źle? Nie czytasz dokumentacji.
http://www.cplusplus.com/reference/regex/regex_search/
Popatrz wyraźnie na przykład który oferują i porównaj go z twoim kodem. Czegoś ci brakuje?

1

Jak wyszukujesz samych liczb, to regexa też byś mógł poprawić:

std::regex rx(R"((\d+))");

1 użytkowników online, w tym zalogowanych: 0, gości: 1