Hey alle, ich versuche gerade, eine Kompilierzeitstringverschlüsselung zu schreiben (mit den Wörtern 'string' und 'encryption' ganz locker) lib.
Was ich bisher habe, ist wie folgt:
%Vor%Ich kann jedoch nicht herausfinden, wie man Operationen an den Zeichen durchführt, wenn ich sie in das statische Array expandiere. Ich möchte nur eine einfache Operation für jedes Zeichen ausführen (z. B. '(((^ 0x12) ^ 0x55) + 1)' wobei c das Zeichen ist.
Ein Schub in die richtige Richtung wäre sehr willkommen.
Danke allen.
Wenn Sie nur ein Zeichen auf einmal bearbeiten möchten, ist es einfach:
%Vor% Beachten Sie, dass CountArgs
redundant ist (dafür steht sizeof...
) und dass dies elementweise Transformation der Elemente in einem Parameter-Pack .
Um die Umwandlung von vorherigen Ergebnissen abhängig zu machen, wäre eine Option, die Zeichen nacheinander einzeln zu verwenden und daraus schrittweise eine neue Vorlage zu erstellen:
%Vor% Wenn ich verstehe, was Sie richtig machen wollen (tatsächlich erstellen Sie ein Array zur Kompilierzeit), denke ich, dass variadische Vorlagen nicht ausreichen und Sie auf constexpr
.
Wenn Sie jedoch kein aktuelles Array benötigen und stattdessen etwas wie tuple
's get<I>
verwenden können, dann ist es möglich (Sie können dann ein Array char
zur Laufzeit erstellen).
Tags und Links c++ c++11 templates metaprogramming