Explode und List
-
Hi,
Es gibt in C++ sicher sowas wie Explode und list...
PHP Beispiel:
list($user,$pwd) = explode("#");
Wie funktioniert das in C++ genau?
(oder welche Header Datei brauch ich wenn das obere scon richtig is *g*)Und wie kann ich folgendes machen:
Der user schreibt z.B
oua("Hallo");
in nen string
Ich will nun das ich den Paramter weiss (in dem falle "Hallo") und den dazugehörigen Befehl,
Wie kan ich dies tun?
Machts gut,
Stefan
-
Es gibt in C++ sicher sowas wie Explode
Ja. Wenn du selbst schreibst
Hier mal eine simple Version:
#include <algorithm> #include <string> #include <iostream> using namespace std; int Explode(const string& str, vector<string>& Result, const string& exstr) { string::size_type Pos = 0; string::size_type Pos2 = 0; int Substrings = 0; while ( (Pos2 = str.find(exstr, Pos)) != string::npos) { Result.push_back(str.substr(Pos, Pos2 - Pos)); ++Pos2; Pos = Pos2; ++Substrings; } Result.push_back(str.substr(Pos, Pos2 - Pos)); return ++Substrings; } int main(int argc, char* argv[]) { string Str = "Hallo#Welt#Hallo#Fred"; vector<string> Res; Explode(Str, Res, "#"); copy (Res.begin(), Res.end(), ostream_iterator<string>(cout, "\n")); }
Den zweiten Teil deiner Frage verstehe ich nicht.
-
Also so eine Art eigene Programmiersprache
Wenn links = "befehl(\"" dann
Wenn rechts = \");" dann ermittle was zwischen " und " steht...Ich hoffe jetzt verstehst du es etwas besser
-
Hi,
deine eigene Sprache... Das ist nicht ganz trivial.
Stell dir vor der User schreibt anstatt
befehl("Hallo")einfach
befehl ( "Hallo" )
weil er es so für besser Lesbar hält.
Suchst du jetzt nach "befehl(\"" hast du schon verloren.
Oder du sagst ihm, er darf keine zusätzlichen Leerzeichen verwenden. Sehr Unser-Unfreundlich.
Wenn es nur um ganz einfache Scripte geht, so nach dem Motto: Befehl, Parameter solltest du vielleicht eine etwas einfachere "Syntax" verwenden, vielleicht sowas:
Befehl1: Parameter
Befehl2: Parameter1, Parameter2Das lässt sich sehr einfach auseinandernehmen, und du brauchst keinen Scanner, Tokenizer, Parser zu schreiben.
-
Hab sowas auch schon mal benötigt um Dozenten aus einer Textdatei einzulesen.
int read(vector<string> &doz,string *src) { int i=0,pos=0; do doz.push_back(src->substr(pos,src->find(';',pos)-pos)); while((++pos+=doz[i].length())&&++i&&i<count(src->begin(),src->end(),';')); return i; }