Я попробовал очень простое использование regex_search
и не могу понять, почему я не получаю совпадение:
Увы, gcc-C ++ 0x-реализация 4.5, похоже, не работает,Я получаю сообщение об ошибке здесь .
Но вот моя попытка gcc-4.7.0, довольно просто:
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main () {
regex rxWorld("world");
const string text = "hello world!";
const auto t0 = text.cbegin();
smatch match;
const bool ok = regex_search(text, match, rxWorld);
/* ... */
}
Я думаю, я должен получить ok==true
и что-то в match
.Я сократил пример до очень простого выражения для этого.Сначала я попробовал немного сложнее.
Но при печати кода на /* ... */
говорится иначе:
cout << " text:'" << text
<< "' ok:" << ok
<< " size:" << match.size();
cout << " pos:" << match.position()
<< " len:"<< match.length();
for(const auto& sub : match) {
cout << " ["<<(sub.first-t0)<<".."<<(sub.second-t0)
<< ":"<<sub.matched
<< "'"<<sub.str()
<< "']";
}
cout << endl;
Вывод:
$ ./regex-search-01.x
text:'hello world!' ok:0 size:0 pos:-1 len:0
ОбновлениеЯ также пытался regex_search(t0, text.cend(), match, rxWorld)
и const char* text
, без изменений. `
Неужели мое понимание regex_search
неверно? Я совершенно сбит с толку.Или это просто gcc?