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
5
A
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.
0
Hier ist ein Artikel über das Thema: http://akrzemi1.wordpress.com/2011/05/11/parsing-strings-at-compile-time-part-i/. Der Autor implementiert einen einfachen RPN-arithmetischen Rechner, der während der Kompilierung mit Benutzer-String-Literalen und conetexpr arbeitet. Ich werde nicht versuchen, hier noch eine Zusammenfassung des Artikels zu geben.
Verwandte Themen
- 1. C/C++/Objective-C-Texterkennungsbibliothek
- 2. Differenz zwischen scanf ("% c", & c) und scanf ("% c", & c)
- 3. Eye-Tracking-Bibliothek in C#, C/C++ oder Objective-C
- 4. Matlab in C C++ und C C++ in Matlab
- 5. C/C++/C#/VB-basierte Lexikalische Analysatoren
- 6. virtuelle Datei? in c/C++ oder C#
- 7. main() in C, C++, Java, C#
- 8. C/C++/C# SetWindowPos: Fenster über anderen
- 9. Einführung in C# für C/C++ - Benutzer
- 10. Natives C++ zu verwaltetes C++ zu C#
- 11. statisches Array in C# vs C/C++
- 12. Externe C/C++ - Bibliothek nicht in C#
- 13. Testcode in C C++
- 14. C++ Union in C#
- 15. typedef wie C/C++
- 16. C/C++ URL-Dekodierbibliothek
- 17. von C++ zu C#
- 18. C++ zu C Umwandlung
- 19. SendInput() Tastaturbriefe C/C++
- 20. Opensource C/C++ - Dekompiler
- 21. C/C++: Zeigerarithmetik
- 22. C, Objective-C-Präprozessorausgabe
- 23. C/C++ Speicherproblem?
- 24. C# C++ Visual Studio
- 25. C/C++ Literale
- 26. C++ - Objektdiagramm zu C#
- 27. ReSharper für c/C++
- 28. Convert C++ in C
- 29. Beste C/C++ - Netzwerkbibliothek
- 30. QNX C/C++ Software
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
Die Frage ist, dass sie zumindest leicht lesbar und wartbar an das Programm übergeben werden, dh Sie müssen nicht "a", "b", "c", ... "schreiben. –