Ошибка при поиске подстроки регулярным выражением
Работаю в Visual Studio Express 2012.
Здесь можно скачать триальную версию: http://www.microsoft.com/ru-ru/download/details.aspx?id=34673
Написал функцию, которая успешно проверяет строку регулярным выражением и находит нужные подстроки, но когда функция получает остаток строки, в котором уже нет ничего, что бы подходило про выражение, я получаю ошибку:
Expression: string iterator not dereferencable
Вызов в данной ситуации получается такой:
std::smatch m;
std::regex rExp("[a-z][a-z0-9]*"); //имя переменной
strBuf = "*10.5)*51E-10";
std::regex_search (strBuf, m, rExp);
Соответственно, ошибка возникает после вызова regex_search. Причем, при вызове из тела программы всё выполняется успешно, но внутри функции с абсолютно аналогичными аргументами я получаю ошибку в этой строке:
while (std::regex_search (strBuf, m, rExp)){
Исходный код: http://pastebin.com/6Q3wJ6FD
Если std::regex
не объявляется по переменной, можете убрать switch
и писать напрямую:
std::regex rExp("[a-z][a-z0-9]*");
А в main оставить один вызов searchLexemes(input, i, 1, fout);