Ich möchte in der Lage, eine Funktion mit einer Variablen oder einer Kombination von Variablen in der Befehlszeile aufrufen, wie:C++ argv [] als Beziehung zwischen Variablen mit CERN-ROOT
$ ./myFunction.exe "var1"
oder
$ ./myFunction.exe "var1/var2"
Später in meinem Skript definiere ich eine Variable float VAR, die entsprechend der Benutzereingabe definiert werden sollte. Für den ersten Fall, ich will:
float VAR = var1;
... und für den zweiten Fall, ich will:
float VAR = var1/var2;
Gibt es eine Möglichkeit in CERN ROOT Rahmen dieses benutzerdefinierten Zeichenfeld zu interpretieren als eine Beziehung zwischen Variablennamen wie dieser? Mir ist klar, dass dies eine Strecke ist, aber im Moment muss ich jedes Mal, wenn ich VAR ändern möchte, dies hart codieren, und ich würde es vorziehen, das nicht tun zu müssen.
Beachten Sie, dass diese Variablen in einem Ttree benannt sind, die ich von einer externen * .root Datei eingelesen, so dass ich dachte, es eine Möglichkeit sein kann VAR mit gROOT-> Process() zu definieren, aber ich haven Ich konnte es nicht herausfinden. Ich verstehe, dass dies in direktem C++ unmöglich ist, aber ich denke, das sollte mit ROOT möglich sein.
Können Sie nicht einfach die Operation analysieren und es tun, als würden Sie mit einem Taschenrechner? – NathanOliver
Was meinst du mit "parse die Operation"? Wenn es eine Zahl wie ein float oder ein int wäre, könnte ich std :: atof bzw. std :: atoi verwenden, aber das sind Namen von Variablen in meinem Skript, nicht Zahlen oder Strings oder irgendetwas. – awwsmm
Nun, Sie würden eine Karte oder etwas ähnliches benötigen, das Sie eine Zeichenkette der Variablen zuordnen können, die die Zeichenkette darstellt, und dann können Sie die Werte ersetzen, sobald Sie die Zeichenkette analysieren. – NathanOliver