2010-09-15 12 views
5

J'ai regardé mpl :: string de boost, mais il ne semble pas y avoir un moyen facile de convertir des littéraux de chaînes au format basé sur des guillemets simples de mpl :: string. Ce que j'essaye de faire est de générer au moment de la compilation une réalisation XML de certaines structures de données simples en utilisant des chaînes de temps de compilation. Je cherche à ce que les macros génèrent les structures elles-mêmes et insèrent un champ "meta" constant à l'intérieur, contenant la chaîne XML.C++ manipulation de chaînes à la compilation

Répondre

3

La réponse courte est non, il n'y a pas de moyen facile. Au moins ne pas utiliser C++ seul, et au moment de la compilation. Vous pouvez utiliser des scripts ou un autre générateur de code pour produire mpl::string s avec les littéraux corrects. C++ 0x apportera des littéraux définis par l'utilisateur [1], qui permettent une manipulation facile des littéraux, caractère par caractère, par exemple, en utilisant des modèles variadiques.

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

Y at-il une garantie que les littéraux définis par l'utilisateur sont traités au moment de la compilation? J'ai toujours supposé que nous sommes à la merci de l'optimiseur pour cela. – peterchen

+0

La question est qu'ils sont au moins passés au programme d'une manière facile à écrire et à maintenir, c'est-à-dire que vous n'avez pas besoin d'écrire «a», «b», «c», ... ». –