Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Parser verbessern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.06.2005, 15:11 Uhr
~kodak
Gast


Hi Leute,

mit c++ kenne ich mich noch nicht so gut aus. Da ich es aber für einen Server praktischer finde, will ich so einen auch in C++ schreiben. Das Grundprinzip funkioniert schon, jetzt will ich noch einen Parser schreiben, dass der Server die Befehle auch benutzen kann. Dazu sollen die gesendeten Zeichenketten in 3 Bestandteile zerlegt werden:
- Absender
- Befehl
- Parameter des Befehls
Das habe cih auch gemacht, aber mich würde interessieren, wie ich meinen bisherigen parser code verbessern kann, bzw welche Programmierwerkzeuge/Techniken dafür besser geeignet wären.

Hier mein Code

C++:
//Den Befehl parsen und Serverrelevante Befehle erfassen
int msgPos=1;
//Absender ermitteln
while(1)
  {
    if (msgPos>(int)strlen(buf2)) break;
    if (buf2[msgPos] == ':')
      {
   msgPos++;
   break;
      }
    else
      {
   sprintf(buf_name,"%s%c ",buf_name,buf2[msgPos]);
      }
    msgPos++;
  }
//Befehl erfassen
while(1)
  {
    if (msgPos>(int)strlen(buf2)) break;
    if (buf2[msgPos] == ':')
      {
   msgPos++;
   break;
      }
    else
      {
   sprintf(buf_command,"%s%c ",buf_name,buf2[msgPos]);
      }
    msgPos++;
  }
//Übergabewerte erfassen
while(1)
  {
    if (msgPos>(int)strlen(buf2)) break;
    if (buf2[msgPos] == ':')
      {
   msgPos++;
   break;
      }
    else
      {
   sprintf(buf_expression,"%s%c ",buf_name,buf2[msgPos]);
      }
    msgPos++;
  }




Vielen Dank schonmal für die Hilfe

Dieser Post wurde am 05.06.2005 um 15:14 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.06.2005, 15:21 Uhr
0xdeadbeef
Gott
(Operator)


Hmm. Wen ich richtig verstehe, worauf du hinaus willst,

C++:
#include <sstream>
#include <string>

using namespace std;

// ...

string message = "absender befehl parameter1 parameter2";
string absender, befehl, parameter;
istringstream isstr(message);

isstr >> absender >> befehl;
getline(isstr, parameter);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 05.06.2005 um 15:21 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: