std::find verursacht



  • Schönen Guten Abend

    Ich habe ein kleines Problem.
    Erstmal den Code:

    bool CheckMD5Good(string sMD5, vector<string>::pointer MD5Bad)
    {
    	if (find(MD5Bad->begin(), MD5Bad->end(), sMD5) != MD5Bad->end())
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    
    }
    

    Ich möchte eine MD5, welche in einem String gespeichert ist (sMD5) in einem Vector suchen, und da der sehr groß ist wollte ich dafür einen Zeiger nehmen. Aber ich bekomme immer die Fehlermeldung:

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(41): error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'char' akzeptiert (oder keine geeignete Konvertierung möglich)
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(470): kann 'bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)' sein
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(475): oder "bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)"
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(481): oder "bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)"
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(408): oder "bool std::operator ==(const std::error_code &,const std::error_condition &)"
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(416): oder "bool std::operator ==(const std::error_condition &,const std::error_code &)"
    1>          bei Anpassung der Argumentliste '(char, const std::string)'
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(74): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "_InIt std::_Find<char*,_Ty>(_InIt,_InIt,const _Ty &)".
    1>          with
    1>          [
    1>              _InIt=char *,
    1>              _Ty=std::string
    1>          ]
    1>          c:\users\christian\documents\projects\pcfix\pcfix\src\checkfile.cpp(20): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "_InIt std::find<std::_String_iterator<_Elem,_Traits,_Alloc>,std::string>(_InIt,_InIt,const _Ty &)".
    1>          with
    1>          [
    1>              _InIt=std::_String_iterator<char,std::char_traits<char>,std::allocator<char>>,
    1>              _Elem=char,
    1>              _Traits=std::char_traits<char>,
    1>              _Alloc=std::allocator<char>,
    1>              _Ty=std::string
    1>          ]
    

    Ich hoffe ihr könnt mir helfen.

    Mit freundlichen Grüßen
    pc-jedi


  • Mod

    pc-jedi schrieb:

    Ich möchte eine MD5, welche in einem String gespeichert ist (sMD5) in einem Vector suchen, und da der sehr groß ist wollte ich dafür einen Zeiger nehmen. Aber ich bekomme immer die Fehlermeldung:

    Da hast du 2 Sachen völlig falsch verstanden:
    1. Was vector::pointer ist
    2. Wie man das eigentlich mit der Referenzübergabe macht

    bool CheckMD5Good(string sMD5, vector<string> const &MD5Bad)
    {
        if (find(MD5Bad->begin(), MD5Bad->end(), sMD5) != MD5Bad->end())
        {
            return true;
        }
        else
        {
            return false;
        }
    
    }
    

    Ungetestet, sollte aber funktionieren.



  • Ah vielen danke muss dann aber so aussehen:

    bool CheckMD5Good(string sMD5, vector<string> const &MD5Bad)
    {
    	if (find(MD5Bad.begin() , MD5Bad.end(), sMD5) != MD5Bad.end())
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    
    }
    


  • oder so:

    bool CheckMD5Good(string const &sMD5, vector<string> const &MD5Bad)
    {
      return find(MD5Bad.begin() , MD5Bad.end(), sMD5) != MD5Bad.end();
    }
    

    bb


Anmelden zum Antworten