Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zum ANSI-Präprozessor / Zeichenketten zusammenfügen

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
13.10.2019, 19:07 Uhr
Rolli



Hallo, eine Frage zum Präprozessor.
Ich schreibe gerade einen recht speziellen Parser und suche nach *irgendwas* am Zeilenanfang.
Für die weitere Bearbeitung benötige ich sowohl das "irgendwas" nummerisch, als auch die Position des Zeichens nach dem *irgendwas*.

Beispiel:

enum {FAIL, TEST, BLABLA, USW};
char *aLine = "*test* weiterer Inhalt nach dem *test*";
char *aPtr;
int aStatus;

aPtr = NULL;
if (!strncmp(aLine, "*test*", 6)) {
aStatus = TEST;
aPtr = aLine + 6;
}
if (!strncmp(aLine, "*blabla*", 8)) {
aStatus = BLABLA;
aPtr = aLine + 8;
}
...
if (!aPtr) aStatus = FAIL;

Nun habe ich eine längere Liste derartiger Schlüsselwörter, und möchte es vereinfachen. Meine Idee war, dafür ein Makro zu schreiben:

#define aCheck(Pattern) if (!strncmp(aLine, "*"+#Pattern+"*", strlen(#Pattern))) {aStatus = Pattern; aPtr=aLine+strlen(#Pattern)+2 }

und es dann zu verwenden:

aCheck(TEST);
aCheck(BLABLA);
...

Mein Problem: Wie bekomme ich vor und hinter die Stringrepräsentation meines Suchpatterns #Pattern die Trennzeichen, im Beispiel "*"?
Die Konkatenation "*"+#Pattern+"*" funktioniert nicht???

Danke im Voraus für jeden Tipp.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.11.2019, 09:25 Uhr
Tommix



Hallo,
Stringverkettung geht in C einfach ohne '+': "Blah " "blah", also

C++:
#define aCheck(Pattern) if (!strncmp(aLine, "*"#Pattern"*", strlen(#Pattern))) {aStatus = Pattern; aPtr=aLine+strlen(#Pattern)+2; }



Gruß
Tommix
 
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: