Ein Array mit CString??
-
Hallo.
Ich versuche, eine Methode/Funktion zu schreiben, die dem PHP-Befehle explode() nachempfunden ist.
Zur Klärung: explode() durchsucht einen String nach einem Zeichen und "bricht" den String an diesen Stellen auf und liefert die Teilstrings in einem Array.
Beispiel:<?php $text = "Dies ist ein Text"; $array = explode(" ",$text); ?>Jetzt steht in
$array[0] = "Dies"; $array[1] = "ist"; $array[2] = "ein"; $array[3] = "Text";Der Algo ist an sich einfach, aber ich bekomme es nicht hin, weil ich nicht weiß, als was ich $array in C++ definieren muss!? Ich habs mit CStringArray versucht, funktioniert aber nicht, weil ich die Indizierung damit nicht vereinen kann.
Jemand einen Tipp für mich??
CyA
P.S.: Hab VC++ und nutze MFC, falls es relevant sein sollte.
-
du guckst unda http://nanosoft.de.tc/
klickst auf downloads..........dan ziehst du dir "nanolib" und gukct in der
Converter.hpp und Converter.cpp.................
dann freust du dich das du noch von std::string auf MFC::CString umstellen musst...und fertig..........
falls du proibleme mit dem original source hast melde dich bei mir.....
ich bin als autor schlieslich verantworlich für dieses mini projhect......Mfg Shade37337
-
Shade37337, bitte keine Posts mehr verfassen solange du nicht deine Tastatur reparierst. Irgendwie klemmt deine '.'-Taste. Oder du bist einfach zu dumm sie zu benutzen, oder du beherrscht die deutsche Sprache nicht.
@Topic: Hier ist das C++-Forum, darum geb ich mal eine Antwort für std::string, da sich CString imo sehr ähnliuch verhält könnte man eventuell einfach ein Template drum bauen.
Ich hab das mal so geschrieben, und noch kurz eine exemplarische Mainfunktion hinzugefügt:
template<class Iterator> void string_explode(std::string const& str, std::string const& seperator, Iterator input) { std::string::size_type startpos = 0, endpos; do { endpos = str.find(seperator, startpos); *(++input) = str.substr(startpos, endpos - startpos); startpos = endpos + seperator.size(); } while(endpos != std::string::npos); } int main() { using namespace std; list<string> stringlist; string line; getline(cin, line); /* Exploden */ string_explode(line, " ", back_insert_iterator<list<string> >(stringlist)); /* Leere Elemente Löschen */ stringlist.remove_if(mem_fun_ref(&string::empty)); /* Ausgabe */ copy(stringlist.begin(), stringlist.end(), ostream_iterator<string>(cout, "\n")); }
-
dei deutsche sprache berhersch ich wiklich net.....
hab bald ne neue tastatur....
ich versuch mal mein deutsc zu bessan.....
-
@shade37337: Ich werde nach dem Klick auf "Download" für http://nanosoft.95mb.com/downloads/nanolib.rar weitergeleitet nach http://www.95mb.com/
@Fachman für Kinder: einen ähnlichen Code hab ich schon über Google gefunden, konnte ihn aber wegen fehlender Kenntnise nicht "umstricken". Von daher gesehen wäre es mir schon lieb, wenn einfach nur meine Frage beantwortet werden würde. (Ohne repektlos klingen zu wollen.)
-
Auf Deutsch: du hast absolut keine Ahnung wie man das macht und hoffst, dass es dir jemand programmiert und du nur noch copy'n paste machen musst.
-
also...der redirect beim link funzt net..schade..
/* Copyright (c) by Shade37337, Nanosoft It's free to use this code in non-commercial projects or for education. You're not allowed to use this code for commercial products. You mustn't misrepresent this Code if you ever used it. You musn't modify this code. And and at last You musn't remove the Copyright notation and You're not allowed to remove this license notation (Sorry for my bad english, i'm still learning it....) */ void explode(const std::string& text, const char& token, std::vector<std::string>& result) { std::string strSub; std::vector<std::string> res2; std::string::size_type last = 0; std::string::size_type temp = text.find_first_of(token, last); while (temp != std::string::npos) { strSub = text.substr(last, temp - last); if (!strSub.empty()) { res2.push_back(strSub); } last = temp + 1; temp = text.find_first_of(token, last); } res2.push_back(text.substr(last, std::string::npos)); result.swap(res2); }
-
@Dr. Prof:
Eine Frechheit, dass Du mir so etwas unterstellst.
Wie ich bereits schrieb, hab ich die Funktion vom Algo. her fertig. Ich weiß halt nur nicht, wie ich das dafür erforderliche Array in C++ definieren bzw. mit Werten füllen muss. Ich könnte es in Basic, PHP, Perl und noch anderen Sprachen, aber halt nur nicht in C++.Also lies Dir erst einmal durch, worum es geht und schreibe dann Deinen Kommentar. Von Copy&Paste hab ich nämlich nichts geschrieben.
Warum ist es so verdammt schwer, Informationen/Hilfe zu bekommen? Wenn ihr nicht helfen wollt, dann lasst es doch sein und meldet Euch vom Forum ab, denn dafür ist (soweit ich weiß) ein Forum da: um zu helfen!
Wenn einige DAUs nach ganzen Skripten fragen und man dann ausflippt, ist es ja okay, aber ich will doch nur eine winzige Information haben. Ist das zuviel verlangt?
@shade37337:
Hm, den Code verstehe ich nicht. Ich werde mal versuchen, den bei mir einzubauen, aber im Moment sehe ich keine Ähnlichkeiten zu meiner explode()-Funktion
CyA
-
die shade-explode-fkt gibt kein array zurück, sondern du musst ihr einen std:.vector<string> übergeben, welcher dann durch die Fuktion gefüllt wird. Vektor ist sowas wie ein Array, nur dass er dynmisch ist, also zur Laufzeit seine Größe ändern kann, und das tut er auch noh automatisch
du musst shades also so einsetzen:vector<string> v; string text = "bla bla bla bla"; explode(text, ' ', v); for(int i = 0; i < v.size(); i++) cout << v[i] << endl;
-
Anscheinend hab ich aber recht, sonst hättest du schon längst nen C++ Tutorial aufgeschlagen und geschaut wie man nen Array erstellt und verwendet..
-
@vollkommenegal:
wenn du son php profi bisch..dann zieh dir den source von php und dort is explode defineiert für php...
ansonsten geb ich den prof recht.
wenn du soviel ahnung vom proggenhast wie du sagts, da hätest du lä ngst ne tut benutzt.meine func benuzt ein std::vector weil er dynamisch ist.
um ihn anstatt als parameter als return zu vrewnden musst du nu mit dein prog kenntnissen den code lesen und verstehen.
wenn du ih nicht verstehst dann haben ide anderen recht..und du solltest ers pprogrammiern/ in deisem fall C++ LERNEN.mfg Shade3737
-
frechen text gelöscht.
wer fragen hat, sollte doch ein mindestmaß an höflichkeit an den tag legen.