2013-05-01 125 views
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; 
      } 
     } 

我面對這個問題很多。有時候解決方法是有效的,有時卻不行。我想知道這個「字符串迭代器不兼容」錯誤的原因。有人能幫助我嗎?

回答

6

這種情況下的問題是itScheme是指向p_strUrl的迭代器,而l_itTempConst是指向strSchemeEnd的迭代器。因爲它們指向不同的字符串,所以比較這兩個迭代器是不合法的。

4

itScheme是一個迭代器轉換爲字符串p_strUrl l_itTempConst ISN的迭代器strSchemeEnd

您不能從不同的容器

比較迭代器