explode in c++



  • problem mit find

    char str = "=";
                        size_t found;
                        found = rechenfeld1->Text.find(str);
                        ergebnisfeld1->Text = found;
    

    fehlermeldung:

    1>Kompilieren...
    1>rechenmaschiene.cpp
    1>c:\users\dominik\documents\visual studio 2008\projects\rechenmaschiene\rechenmaschiene\Form1.h(130) : error C2440: 'Initialisierung': 'const char [2]' kann nicht in 'const char' konvertiert werden
    1>        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    1>c:\users\dominik\documents\visual studio 2008\projects\rechenmaschiene\rechenmaschiene\Form1.h(132) : error C2228: Links von ".find" muss sich eine Klasse/Struktur/Union befinden.
    1>        Typ ist 'System::String ^'
    1>        Wollten Sie stattdessen '->' verwenden?
    1>c:\users\dominik\documents\visual studio 2008\projects\rechenmaschiene\rechenmaschiene\Form1.h(133) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)': Konvertierung des Parameters 1 von 'size_t' in 'System::String ^' nicht möglich
    1>        Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
    1>        Es ist keine Standardkonvertierung von der mittels Boxing geschachtelten Form des arithmetischen Typs in den Zieltyp vorhanden.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Dominik\Documents\Visual Studio 2008\Projects\rechenmaschiene\rechenmaschiene\Debug\BuildLog.htm" gespeichert.
    1>rechenmaschiene - 3 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    


  • Und was sagt dir die Fehlermeldung?

    "=" ist ein const char[2] -Literal und kein char -Literal.



  • #include <string>
    #include <vector>
    #include <iostream>
    
    typedef std::vector< std::string > TStringVector;
    
    void explode( TStringVector& v, const std::string& s, const char sep )
    {
    	std::vector<int> token_list;
        int pos = 0;
    
        for ( int i = 0; i < s.length(); i++ )
        {
            if ( s[i] == sep ) 
            {
               token_list.push_back(i);
            }
        }    
        token_list.push_back(s.length());
        for ( int i = 0; i < token_list.size(); i++ )
        {
            int num_chars = token_list[i] - pos;
            std::string token = s.substr(pos, num_chars);
            pos = token_list[i]+1;
            v.push_back(token);
        }    
    }
    
    int main()
    {
       TStringVector vec;
       std::string const s = "Dummy,Lummy,Yummy,Hummy,Lummy";
    
       explode(vec, s, ',');
    
       TStringVector::iterator it = vec.begin();
       for ( it; it != vec.end(); it++ )
       {
           std::cout << *it << std::endl;
       }
    }
    

    Ausgabe:

    Dummy
    Lummy
    Yummy
    Hummy
    Lummy

    Schnellschuss... gibt bestimmt noch andere Wege..
    rya.



  • Nexus schrieb:

    Und was sagt dir die Fehlermeldung?

    "=" ist ein const char[2] -Literal und kein char -Literal.

    Jein Die Fehleremeldung besagt, dass er C++/CLI benutzt:

    Zeile 8 schrieb:

    1>c:\users\dominik\documents\visual studio 2008\projects\rechenmaschiene\rechenmaschiene\Form1.h(133) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)': Konvertierung des Parameters 1 von 'size_t' in 'System::String ^' nicht möglich

    Also wenn er schon in .Net benutzt kann er gleich System::String::Split benutzten, was genauso wie explode funktioniert:
    http://msdn.microsoft.com/en-us/library/b873y76a(VS.80).aspx



  • ok

    ^^ is wies aussieht bissle schwerer als php ^^ aber des geht ja^^ 🙄



  • ah^^ oke benutze ich ^^



  • Rhombicosidodecahedron schrieb:

    Jein Die Fehleremeldung besagt, dass er C++/CLI benutzt:

    Der erste Fehler hat nichts mit der Verwendung von C++/CLI zu tun.

    Die Fehlermeldung

    error C2440: 'Initialisierung': 'const char [2]' kann nicht in 'const char' konvertiert werden
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist

    ist ziemlich eindeutig. Manchmal würde es nicht schaden, wenn die Leute wenigstens versuchen würden, Fehlermeldungen zu interpretieren.



  • oke werds machen

    ^^ hab gestern angefangen

    nur die containerklassen und klassen machen mir probleme bis jetzt^^

    also werd nächstes mal die fehler besser lesen 😉


  • Administrator

    Und du willst wirklich C++/CLI lernen und nicht C++? Das sind nämlich zwei unterschiedliche Sprachen, falls dir das nicht klar ist.

    Grüssli



  • bammes schrieb:

    ^^ hab gestern angefangen

    Dann würde ich mich vielleicht zuerst etwas mit den Grundkonzepten befassen (z.B. dem Typsystem). STL-Container sind zwar ein wichtiger Bestandteil von C++, aber sie sind ein eher fortgeschrittenes Konzept. Sie anzuwenden geht relativ schnell, aber die Hintergründe vollständig zu verstehen, erfordert eine gute Kenntnis der Sprache.

    Ich würde mir an deiner Stelle unbedingt ein C++-Buch zulegen, z.B. den C++-Primer. Hauptsache, kein Buch von Jürgen Wolf. 😉


Anmelden zum Antworten