Gibt es ein Äquivalent zu Javas FreeMarker?
-
Hallo, gibt es eien ähnliche Bibliotek in C++, mit der man Textersetzung in Dateien betreiben kann?
thx.
-
Brauchst du nicht. Einfach ganzen Dateiinhalt in einen
std::string
laden und mitboost::replace_all()
ersetzen. Den Header dazu findest du in<boost/algorithm/string.hpp>
. Anschließend den neuen Inhalt in die Datei schreiben.
-
@eigenartig ,
danke für die Antwort, wie kann man denn in einem String eine dynamische Anzahl von Einträgen einfügen? Mein Ziel ist in einem tex Template dynamisch Einträge einzufügen, z.B. Tabelleneinträge. Wenn ich z.B. 10 Elemente in meinem Vektor habe, wie kann ich sie 10 mal an einer bestimmten Stelle ($hier) einfügen? Geht das mit boost auch?
-
Ach, Textersetzung... ich hab irgendwie gedacht, du willst einen Text setzen...
Das geht auch mit der Standard Bibliothek, da muss man evt. etwas mehr selbst schreiben: http://www.cplusplus.com/reference/string/string/
find
undreplace
sind Funktionen, die du dafür vermutlich benötigst.Wenn du einen Vektor mit verschiedenen Elementen hast, und du einzelne davon mehrfach aneinander reihen möchtest, könntest du dir dafür z.B. eine Funktion selbst schreiben, die das macht. (+= oder append() sind die Sachen, die du dafür verwenden könntest). Das ist jetzt alles keine Magie. Ob es eine Bibliothek gibt, die das alles vorgefertigt drinnen hat, so dass du nur eine Funktion aufrufen musst, weiß ich nicht.
-
Du musst in deinem Template eben eine eindeutige Stelle definieren an der eingefügt werden soll. Mittels
std::string::find()
kannst du dann die betroffene Stelle finden und diesen Index benutzt du dann um dort deine Elemente einzufügen.Wie du diese Stelle definierst kann ich dir aber nicht sagen. Das hängt vom Format ab. Hast du es denn schon versucht? Was ist dein Fortschritt?
-
Sorry, aber eure Antworten passen alle nicht. FreeMarker ist eine Template-Engine, kann u.a. auch for-Loops, if-Statements und so weiter. Einfaches Textersetzen ist das nicht!
Ich kenne solche Engines nur aus dem Web-Bereich und habe noch nie mit C++ Web gemacht, daher auch keine Empfehlung von mir.
Vielleicht mal hier gucken: https://stackoverflow.com/questions/4456228/is-there-a-good-template-engine-for-c?rq=1
-