nachricht parsen
-
hi
wie kann ich eine nachricht parsen. hab absolut keine ahnung davon.
jemand n link zum tutorial oder weiß jemand wie es geht?
gruß
ebrosius
-
Dein Beitrag ist zu allgemein.
-
also ich habe einen bot für irc chat geschrieben. der kann jetzt auf nachrichten antworten. allerdings muss ich ihm die komplette nachricht die der server übermittelt übergeben. muss also die servernachricht auseinander nehmen, um nur den text den der user schreibt zu übergeben.
bsp:
server: :username!blabbla ... PRIVMSG #channel : hi
muss das "hi" nur rausfiltern
-
Hallo
nimm z.B. std::string und nutzt die Methoden, um das unpassende rauszufiltern.
bis bald
akari
-
hmmm...das sagt mir jetzt auf anhieb erstmal garnichts
-
im allgemeinen ist parsen recht kompliziert, aber in deinem fall scheint die lösung einfacher zu sein: nach dem ersten vorkommnis von "#channel:" suchen und den text dahinter extrahieren:
#include<string> #include<algorithm> using namespace std; string extract_word (const string &str, int pos=0) // extrahiere wort ab position pos // führende leerzeichen werden übersprungen { // führende leerzeichen überspringen int start=str.find_first_not_of(" ",pos); if(start==string::npos) start=msg.size(); // wortende finden int end=str.find_first_of(" ",start); if(end==string::npos) end=msg.size(); // wort kopieren string word(end-start); copy(str.begin()+start,str.begin()+end,word.begin()); return word; } string extract_field (const string &msg, const string &key) // extrahiere wort, daß auf das schlüsselwort key folgt // gibt "" zurück, falls key nicht in msg vorkommt { string word; int start=msg.find(key); if(start!=string::npos) // schlüsselwort gefunden word=extract_word(msg,start+key.size()); return word; } string extract_channel (const string &msg) { return extract_field(msg,"#channel :"); }ob der code tatsächlich funktioniert hängt von der syntax der message im detail ab. und die kenn ich leider nicht.
-
das sieht doch schonmal sehr gut aus.
dank dir konfusius. muss jetzt erstmal arbeiten gehn. heut abend probier ich das mal aus.
thx