Я работаю с C++ на Visual Studio 2010 (я не думаю, что его стандарт v11, но я не проверял).Итератор регулярных выражений не работает в Cpp
Я пытаюсь извлечь из IP-адреса ЬгасегЬ со следующим кодом:
#include <iomanip>
#include <iostream>
#include <string>
#include <regex>
using namespace std;
typedef regex_iterator<string::iterator> regexp;
#define MAX_BUFFER 255
int main() {
string out;
char buffer[MAX_BUFFER];
smatch m;
regex e(" 1.+\\[(.+)\\]");
FILE *stream = _popen("tracert SOMEHOSTNAME", "r");
while (fgets(buffer, MAX_BUFFER, stream) != NULL) {
out = buffer;
regexp rit (out.begin(), out.end(), e);
regexp rend;
while (rit != rend) {
cout << rit->str() << endl;
++rit;
}
}
_pclose(stream);
cout << "Done.";
cin >> buffer;
}
однако, регулярное выражение не извлекая из самой группы. Вместо этого он просто плюет обратно на всю линию!
Я думал, что очень внимательно слежу за примерами, но, похоже, я не правильно использую regex_iterator.
1 - Как лучше всего можно извлечь IP из этой строки
(Side вопроса - есть функция C++, которая будет идти в сеть и получить IP-адрес от имени хоста так же, как ЬгасегЬ нашу пинту Еще что получите адрес макинтоша так же, как агр -a)
Является ли MSVC единственным поставщиком доставка работает регулярное выражение библиотеки? – sehe
Упростить. Чтобы убедиться, что регулярное выражение делает то, что вы хотите, подайте ему одну строку. Если это сработает, прокормите его чем-то более сложным. В этом коде также могут возникать проблемы, чтобы понять, что происходит, тем более, что нет указания того, что содержит текст, который подается в соединитель. –