2010-09-15 19 views
5

Ich schaute auf boost mpl :: string, aber es scheint nicht eine einfache Möglichkeit der Umwandlung String-Literale in die Single-Zitat-Integer-basierten Format von mpl :: string. Was ich zu tun versuche, ist, zur Kompilierzeit eine XML-Realisierung einiger einfacher Datenstrukturen unter Verwendung von Kompilierungszeit-Strings zu erzeugen. Ich strebe danach, dass Makros die Strukturen selbst erzeugen und ein konstantes "Meta" -Feld in sie einfügen, das den besagten XML-String enthält.C++ Compil-Time-String-Manipulation

Antwort

3

Die kurze Antwort ist nein, es gibt keinen einfachen Weg. Zumindest nicht mit C++ allein und zur Kompilierzeit. Sie können Skripte oder einen anderen Codegenerator verwenden, um mpl::string s mit den richtigen Literalen zu erzeugen. C++ 0x bringt benutzerdefinierte Literale [1], die eine einfache Manipulation von Literalen, Zeichen für Zeichen, ermöglichen, zum Beispiel mit variadischen Vorlagen.

  1. http://en.wikipedia.org/wiki/C%2B%2B0x#User-defined_literals
+1

Gibt es eine Garantie, dass benutzerdefinierte Literale zum Zeitpunkt der Kompilierung verarbeitet werden? Ich habe immer angenommen, dass wir dem Optimierer dafür ausgeliefert sind. – peterchen

+0

Die Frage ist, dass sie zumindest leicht lesbar und wartbar an das Programm übergeben werden, dh Sie müssen nicht "a", "b", "c", ... "schreiben. –