Z wykorzystaniem wyrażeń regularnych z boosta, próbuję wyszukać w danym stringu ciągi znaków, które mogą być rokiem (np. "2014 r."). Nie potrafię dojść do przyczyny błędu - na wskazanej linijce (lub następnej, jeśli usunę tą pierwszą) otrzymuję wyjątek: "String iterators are incompatible". Niby sprawdzam, czy vector nie jest pusty, z resztą samo użycie iteratora ze wskazaniem na v_date.begin() powinno chyba wskazać istniejący obiekt...? Treść błędu tak czy siak wskazuje, że błąd nie dotyczy braku obiektu, a niedopasowania typu raczej... Ale dlaczego?
vector<regExpResult> v, v_date;
findRegExp(text.substr(0, promulgatorPosition), L"(\\d{2,4}\\sr\\.)", v_date, false);
if (v_date.size() == (size_t) 0)
continue;
std::wstring foundDate;
int lastDatePosition = -1;
for (std::vector<regExpResult>::iterator dateItr = v_date.begin(); dateItr != v_date.end(); ++dateItr)
{
foundDate = (*dateItr).str().substr(0,4); // ta linijka daje błąd
size_t datePosition = (*dateItr).position((unsigned int)0); //ta też
}
regExpResult jest zdefiniowane jako:
typedef boost::match_results<std::wstring::const_iterator> regExpResult;