3

这是我的示例代码..

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

我经常面对这个问题。有时解决方法有效,有时则无效。我想知道这个“字符串迭代器不兼容”错误的原因。有人可以帮助我吗?

4

2 回答 2

6

在这种情况下的问题是,它itScheme是一个指向的迭代器,p_strUrl并且l_itTempConst是一个指向 的迭代器strSchemeEnd。因为它们指向不同的字符串,所以比较这两个迭代器是不合法的。

于 2013-05-01T15:32:19.040 回答
4

itScheme 是字符串 p_strUrl 的迭代器 l_itTempConst 是 strSchemeEnd 的迭代器

您无法比较来自不同容器的迭代器

于 2013-05-01T15:32:29.583 回答