Я хочу восстановить все ссылки со страницы, при выполнении этого кода получаю:
Библиотека отладки Microsoft Visual C ++
Ошибка отладки!
Программа: C: \ Users \ Gandalf \ Desktop \ proxy \ Debug \ Proxy.exe Файл: C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include \ xstring Строка: 78
Выражение: строковый итератор не может быть разыменован
Для получения информации о том, как ваша программа может вызвать сбой утверждения, см. Документацию Visual C ++ по утверждениям.
(Нажмите "Повторить", чтобы отладить приложение)
Прервать повторную попытку игнорировать
void Deltacore::Client::get_links() {
boost::smatch matches;
boost::match_flag_type flags = boost::match_default;
boost::regex URL_REGEX("^<a[^>]*(http://[^\"]*)[^>]*>([ 0-9a-zA-Z]+)</a>$");
if(!response.empty()) {
std::string::const_iterator alfa = this->response.begin();
std::string::const_iterator omega = this->response.end();
while (boost::regex_search(alfa, omega, matches, URL_REGEX))
{
std::cout << matches[0];
//if(std::find(this->Links.begin(), this->Links.end(), matches[0]) != this->Links.end()) {
this->Links.push_back(matches[0]);
//}
alfa = matches[0].second;
}
}
}
Любая идея?
Добавлен еще код:
Deltacore::Client client;
client.get_url(target);
client.get_links();
boost::property_tree::ptree props;
for(size_t i = 0; i < client.Links.size(); i++)
props.push_back(std::make_pair(boost::lexical_cast<std::string>(i), client.Links.at(i)));
std::stringstream ss;
boost::property_tree::write_json(ss, props, false);
boost::asio::async_write(socket_,
boost::asio::buffer(ss.str(), ss.str().length()),
boost::bind(&session::handle_write, this,
boost::asio::placeholders::error));
заранее спасибо
matches[0].second
будет итератором исходной строки? Вы должны иметь возможность заставить отладчик сообщать вам, где в вашем коде происходит подтверждающий вызов, кстати. - person Alan Stokes   schedule 27.07.2012response
при запуске регулярного выражения? - person ildjarn   schedule 27.07.2012this->
обычно не является обязательным. Его использование или пропуск - это стилевое решение, а не ошибка. - person aschepler   schedule 27.07.2012