Beiträge von extract_numb_from_var

    Darkanos:

    Vielen Dank für den Tipp. Wenn ich die Experten richtig verstanden habe, ist es wohl leider unmöglich, so etwas zu bewerkstelligen, weil die Variablennamen zur Laufzeit unbekannt sind. Vielen Dank für die Hilfe!

    Wasserleiche:

    Es ist speichertechnisch wirklich kein größeres Problem den Integer mit zu übergeben, ich muss halt nur jedes Array einzeln übergeben und die Temperatur dazuschreiben und kann keine Schleife über die Arrays laufen lassen, die das jeweilige Array nimmt und die Temperatur extrahiert. Du schreibst "Alles andere ist viel zu umständlich", heißt das, es ist doch nicht unmöglich? Ich hatte in anderen Foren die Information bekommen, dass so etwas prinzipiell unmöglich ist, weil die Variablennamen zur Laufzeit unbekannt sind. Stimmt diese Info dann doch nicht so ganz!? Vielen Dank für die Hilfe!

    Wasserleiche:

    Ich könnte so halt an eine Funktion, die außer dem Array an sich auch die Temperatur wissen muss, trotzdem nur das Array übergeben und diese Funktion würde dann aus dem Arraynamen die entsprechende Temperatur extrahieren. So, wie ich es jetzt betreibe, übergebe ich eben die Temperatur jedesmal mit. Das ist auch ein Beispiel für einen von Dir angeregten anderen Weg. Ich dachte eben nur, dass man die Information "Temperatur", die ja im Arraynamen enthalten ist, aus diesem herausziehen kann und man sich damit das zusätzliche Angeben einer Temperatur sparen kann.

    Hallo,

    ich versuche seit einiger Zeit, eine Zahl aus einem Variablennamen zu extrahieren. Es funktioniert ohne Weiteres, wenn ich eine bestimmte Variable innerhalb des Hauptprogramms behandele:

    Array erstellen (Könnte auch jede andere Art Variable sein):

    Mat_IO_DP array_temp_20; (Ich benutze numerical recipes)
    --> Aus dem Variablennamen "array_temp_20" versuche ich z.B., die "20" zu extrahieren.

    #define STRING(s) #s
    ........................................

    string matrix_string = STRING(array_temp_20);

    string numbers ="0123456789";

    int pos1 = matrix_string.find_last_of(numbers);

    double last = double((int(matrix_string[pos1]) - 48)); --> gibt mir die "0"

    int pos2 = matrix_string.find_last_of(numbers, pos1 - 1);

    double penultimate = double((int(matrix_string[pos2]) - 48));
    --> gibt mir die "2" usw.

    Das funktioniert Alles, problematisch wird es, wenn ich versuche, das Ganze in eine Funktion zu verpacken. Ich würde es dann gern so aus dem Hauptprogramm aufrufen:

    double temp = get_temp_from_name(array_temp_20);

    mit einem Funktionsprototypen:

    double get_temp_from_name(Mat_IO_DP array_name)

    Das funktioniert nicht, weil die Funktion dann mit dem Namen "array_name" arbeitet und nicht mit dem Namen "array_temp_20", was ich eigentlich versuche. Und in "array_name" ist ja keine Zahl, so bekomme ich auch nichts zurück. Habt Ihr eine Idee? Herzlichen Dank,

    Holger

    P.S.: "48" erscheint aus irgendwelchen Gründen als "4" und ein Smilie, lies also
    "4Smilie" --> "48"