这个程序(它已经从一个更大的程序中缩小了)在windows 7下以vs2008 Release(Win32)模式编译后总是崩溃。我对汇编代码不熟悉,不知道这是编译器或boost :: ends_with的错误或 boost::asio::buffers_iterator。它可以在 Ubuntu 中用 g++ 编译和执行,没有任何问题。
人们说这不太可能是编译器的错误,但是当以调试模式(或禁用优化)编译时,问题确实消失了。
我已经被这个问题困扰了好几个小时。任何帮助表示赞赏。提前致谢。
#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/algorithm/string.hpp>
typedef boost::asio::buffers_iterator<boost::asio::const_buffers_1> iterator_t;
typedef boost::iterator_range<iterator_t> range_t;
static const std::string LINE_END_MARK = "\r\n";
int main(int argc, char* argv[])
{
boost::asio::streambuf _buf;
std::ostream os(&_buf);
os<<"END\r\n";
iterator_t cursor = boost::asio::buffers_begin(_buf.data());
iterator_t end = boost::asio::buffers_end(_buf.data());
std::ostream_iterator<char> it(std::cout," ");
std::copy(LINE_END_MARK.begin(), LINE_END_MARK.end(), it);
range_t r(cursor, end);
if(!boost::ends_with(r, LINE_END_MARK))
return 0;
return 1;
}