Explode?!
-
Hi,
ich weis nich ob ihr in PHP programmiert oder mal programmiert habt, aufjedenfall gibt es in PHP eine funktion namens explode, so wird die angewendet: explode("trennzeichen",$variable");Dadurch wird ein array erstellt, immer ein neuer eintrag wenn trennzeichen kommt.
So ne funktion gibt es in C++ ja nich, und da wollt ich ma fragen ob ihr wisst wie ich das am besten realisieren soll!
Habe mal nen bischen rumgesurft und folgendes gefunden:
map <int,string> explode( const string& separator, const string& data ) { map <int,string> values; if (separator.empty() || data.empty()) return values; int counter = 0; while (true) { std::string::size_type pos; pos = data.find(seperator, 0); if (pos == std::string::npos) { values[counter++] = data; break; } values[counter++] = data.substr(0, (pos - 1)); data = data.substr((pos + seperator.length()-1)); } return values; }
Das funktioniert nur leider nich ganz
[C++ Error] Unit1.cpp(18): E2141 Declaration syntax errorMfg
Bennet
-
Das kannst du ganz einfach mit ner TStringList lösen.
Du weist der Eigenschaft "Delimiter" das Trennzeichen zu und den zu teilenden Text der Eigenschaft "DelimitedText".
-
Hallo
auch mit DynamicArray waere soetwas zu loesen
MfG
Klaus
-
Danke!
Ich werde es mal ausprobieren!Mfg
Bennet
-
Hmmm, kann man irgendwie einstellen, das es z.B. nur 4 mal oder so getrennt wird und dann wollt ich noch fragen warum es nun so einen komischen fehler gibt, ich last den Delimiter auf ; setzen, aber der Text wird durch ein Leerzeichen getrennt, aber ich habe überprüft, der delimiter wird auf ; gesetzt, woran liegt denn das nun?
Mfg
Bennet
-
Weis niemand etwas?
Habe jetzt ne Stunde rumprobiert geht aber irgendwie leider nich
-
habe jetzt ma ne unfehlbare prüfung gemacht:
if(detext->Delimiter == trenner[1])
{
detext->DelimitedText = dertext;
Form1->Label1->Caption = detext->Delimiter;
}Er führt das DelimitedText aus aber anstadt wie in trenner angegeben ; ein Leerzeichen als Delimiter aus, am schluss wird auch auf dem Label ; ausgegeben trotzdem trennt er den Text immer durch ein Leerzeichen, wo liegt der Fehler?
mfg
Bennet
-
ich verstehe nicht, was du da für ein Problem damit hast.
ich schreibe jetzt auch gerade so ein "parser" und funzt einwandfreiTStringList* l = new TStringList();
l->Delimiter = ';';
l->DelimitedText = "Feld1;Feld2;Feld3";danach steht in
l->Strings[0] ==> Feld1
l->Strings[1] ==> Feld2
l->Strings[3] ==> Feld3
-
Ja so sollte es bei mir eigentlich auch sein, aber er trennt es irgendwie nicht durch ; sondern durch ein Leerzeichen obwohl ich Delimiter gesetzt habe!
Is das ein Bug vom BCB 6?
mfg
Bennet
-
So habe nocheinmal geguckt, wenn der Text = Feld1;Feld2;Feld3 ist, dann trennt der das auch richtig aber sobald der Text ein Leerzeichen enthält teil er es durch die leerzeichen und durch die ;