explode in c++
-
Ich würde einfach find_first_of() und find_last_of() sowie substr() nutzen von der Klasse std::string in Verbindung mit einem std::vector. Sollte recht einfach zu implementieren sein.
rya.
-
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 einconst char[2]-Literal und keinchar-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
LummySchnellschuss... gibt bestimmt noch andere Wege..
rya.
-
Nexus schrieb:
Und was sagt dir die Fehlermeldung?
"="ist einconst char[2]-Literal und keinchar-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
explodefunktioniert:
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 istist 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

-
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.
