2016-03-01 4 views
1

Каждый раз, когда я положил [:digit:] в регулярном выражении, как так: regex r("[:digit:]") он бросает исключение и .what() просто возвращает regex_error вместо описательного, содержательного объяснения Ошибка. То же самое происходит, когда я пробую regex r("\\d"). И когда я пробую regex r("\d"), мой компилятор говорит, что \d - это незнакомая последовательность escape-символов. Я в коде: Блоки кстати. Вот мой код:regex_error, появляющиеся при попытке сделать простые вещи, как [: цифры:] или д

#include <regex> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    regex r("\d"); //and or r("[:digit:]") 
    string i = "5"; 
    if(regex_match(i,r)) 
     { 
      cout << "Integer"; 
     } 

    return 0; 
} 
+0

Если вы используете gcc: последний раз, когда я проверил gcc, еще не реализована полная поддержка std :: regex. Это может быть или не быть изменено с текущей версией gcc. Проверьте документацию gcc для получения дополнительной информации. –

+0

Если вы согласны использовать цифру ** [0-9] *** Я не думаю, что ваша версия C++ совместима с POSIX. –

+1

Только что скорректировал мой код Джонни Хенли. Благодарю. –

ответ

0

После получения более новой версии кода :: Блоки и компилятора MinGW GCC он работал.

P.S. У меня возникла ошибка при попытке установить компилятор после загрузки Code :: Blocks. Мне нужно было перейти на Global compiler settings и нажать Reset defaults, чтобы он автоматически обнаружил мой компилятор. Как видно here.