这是我的示例代码..
const std::string strSchemeEnd("://");
StringConstIteratorType itScheme = std::search(p_strUrl.begin(), p_strUrl.end(), strSchemeEnd.begin(), strSchemeEnd.end());
StringConstIteratorType l_itTempConst = p_strUrl.begin();
m_strScheme.reserve(std::distance(l_itTempConst, itScheme));
std::copy(l_itTempConst , itScheme, std::back_inserter(m_strScheme));
boost::algorithm::to_lower(m_strScheme);
l_itTempConst = strSchemeEnd.end();
if ( itScheme == l_itTempConst )
return;
当我尝试运行程序时,我发现以下错误
#if _ITERATOR_DEBUG_LEVEL == 2
void _Compat(const _Myiter& _Right) const
{ // test for compatible iterator pair
if (this->_Getcont() == 0
|| this->_Getcont() != _Right._Getcont())
{ // report error
_DEBUG_ERROR("string iterators incompatible");
_SCL_SECURE_INVALID_ARGUMENT;
}
}
我经常遇到这个问题。有时一种解决方法有效,有时却没有。我想知道这个“字符串迭代器不兼容”错误的原因。有人可以帮帮我吗?
答案 0 :(得分:6)
这种情况下的问题是itScheme
是指向p_strUrl
的迭代器,而l_itTempConst
是指向strSchemeEnd
的迭代器。因为它们指向不同的字符串,所以比较这两个迭代器是不合法的。
答案 1 :(得分:4)
itScheme是字符串p_strUrl的迭代器 l_itTempConst不是strSchemeEnd
的迭代器您无法比较来自不同容器的迭代器