У меня возникают проблемы извлечения значения лексем из моей строки: «JOIN #ROOM \ г \ п» Я компиляция моего кода на Mingw64 со следующими аргументами: г ++ tregex.cpp -о tregex.exe -std = гну ++ 11Regex C Справка по экранирующему символу
Я получаю эту ошибку, но не мое исключение по некоторым причинам:
Это приложение просил Runtime прекратить его необычным способом. Для получения дополнительной информации обратитесь в службу поддержки приложения. Terminate вызывается после метания экземпляра 'станд :: regex_error' , что(): regex_error
Это мой код:
#include <regex>
#include <string>
#include <iostream>
using namespace std;
//Tregex.cpp
int main(void) {
regex rgx("[[:cntrl:]]");
string str = "JOIN #ROOM\r\n";
smatch match;
try{
if(regex_search(str, match, rgx))
for(auto token:match) cout << token <<"\n";
cout<< endl;
}
catch(regex_error & e){
if(e.code() == regex_constants::error_escape)
cerr << "invalid escape character \n";
else if(e.code() == regex_constants::error_stack)
cerr << "regular expression is not big enough\n";
else
cerr << "exception caught: "<< e.what()<<"\n";
}
cin.get();
return 0;
}
'' поддержка в gcc [далеко не полная] (http://stackoverflow.com/questions/12530406/is-gcc4-7-buggy-about-regular-expressions/12665408#12665408). Вы должны переключиться на использование Boost, если вам нужно регулярное выражение. –
Praetorian
- '[[: cntrl:]]' поддерживается в C++ 11 regex? –
Вау, я даже не знал, что регулярное выражение все еще в сыром виде для gcc. Итак, является ли визуальный студийный компилятор для окон полностью реализован? Тогда я буду использовать boost. – HeroofCode