gpt4 book ai didi

c++ - 表达式 : string iterator not dereferencable while using boost regex

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:03 25 4
gpt4 key购买 nike

我想从一个页面中恢复所有链接,同时执行我得到的代码:

Microsoft Visual C++ Debug Library

Debug Assertion Failed!

Program: C:\Users\Gandalf\Desktop\proxy\Debug\Proxy.exe File: C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xstring Line: 78

Expression: string iterator not dereferencable

For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

Abort Retry Ignore

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));

提前致谢

最佳答案

问题出在这一行:

boost::asio::buffer(ss.str(), ss.str().length())

str() 返回一个临时 std::string 对象,因此您实际上是在创建缓冲区后立即使其无效 – Vanilla UB,正如我评论的那样。 ;-]

代币 documentation citation :

The buffer is invalidated by any non-const operation called on the given string object.

当然,销毁字符串属于非常量操作。

关于c++ - 表达式 : string iterator not dereferencable while using boost regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11678537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com