Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [C++] eval ???

  1. #1
    Utente di HTML.it L'avatar di ric.cpp
    Registrato dal
    Sep 2004
    Messaggi
    171

    [C++] eval ???

    ciao,

    esiste che voi sappiate un'implementazione in c++ di una funzione che lavora come la eval() del PHP?

    tnx

  2. #2
    Utente di HTML.it L'avatar di ric.cpp
    Registrato dal
    Sep 2004
    Messaggi
    171
    ...oppure anche in C

  3. #3
    Difficile. Dovrebbe compilare il codice al volo...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  4. #4
    Utente di HTML.it L'avatar di ric.cpp
    Registrato dal
    Sep 2004
    Messaggi
    171
    perchè compilare il codice al volo?

    io parlo di una funzione che esegue il parsing di una stringa e vi sostituisce tutte le occorrenze di alcune parole con il contenuto di variabili con lo stesso nome... il tutto a tempo di esecuzione

  5. #5
    Uhm... Io ho cercato su Google per vedere cosa fa eval() e mi e' uscito questo:

    http://it.php.net/eval
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    Utente di HTML.it L'avatar di ric.cpp
    Registrato dal
    Sep 2004
    Messaggi
    171
    data una var stringa $str se $str contiene al suo interno dei nomi di variabili:

    $nome='riccardo';
    $str = "il mio nome è $nome";
    eval("\$str = \"$str\";");

    il risultato è che in $str, dopo la chiamata ad eval, ci sarà la stringa 'il mio nome è riccardo'

    è difficile da implementare in c?

  7. #7
    Uhm, non c'e' mica bisogno della valutazione di un'espressione!

    Certo, in Java c'e' l'API per le espressioni regolari e quindi li' si va di lusso.
    Cmq ti basta cercare una sottostringa e sostituirla.
    O piu' a basso livello, incollare il pezzo prima della sottostringa, il nome da sostituire, e il pezzo dopo la sottostringa.
    Sul come... aspetta che ti risponda qualcuno che conosce le librerie del C++
    Quando lo usavo io, nel Borland la classe String manco esisteva...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8
    se ho capito tu vuoi che in una stringa ad esempio "str" dopo aver acquisito x esempio la stringa "nome" ci sia in "str" Il mio nome è "nome"?

    se ho capito bene puoi provare facendo questo:

    codice:
    #include <iostream.h>
    #include <string.h>
    
    void main()
    {
         char str[50];/*la lunghezza è stata scelta a caso da me*/
         char nome[10];/*uguale come prima*/
         strcpy(str,"Il mio nome è ");
         cout << "dimmi il tuo nome: ";
         cin.get(nome,10,'\n');/*si può utilizzare anche cin >> nome*/
         strcat(str,nome);
         cout << str;
    }
    PS al posto del "cout" puoi utilizzare la "printf" ed al posto della "cin.get" o "cin" puoi utilizzare la "scanf"

    PPS la funzione "strcat" inserisce il contenuto del secondo parametro in coda al contenuto del primo paramentro
    la funzione "strcpy" copia il contenuto del secondo parametro nel primo eliminando il contenuto precendente

    PPPS Spero di essere stato chiaro

  9. #9
    Utente di HTML.it L'avatar di ric.cpp
    Registrato dal
    Sep 2004
    Messaggi
    171
    PPS la funzione "strcat" inserisce il contenuto del secondo parametro in coda al contenuto del primo paramentro
    il programma non dovrebbe operare un accodamento ma una sostituzione. date le stringhe:

    stringa1 = "Questa è una stringa molto lunga di 1000 byte etc etc ...";

    stringa2 = "questa stringa contiene stringa1 al suo interno";

    la funzione fa il parsing di stringa2 e quando trova l'occorrenza 'stringa1', poichè questa è una variabile la sostituisce con il suo contenuto ottenendo:

    stringa3 = "questa stringa contiene Questa è una stringa molto lunga di 1000 byte etc etc ... al suo interno";

    quello che chiedo è se esiste un'implementazione di questa funzione in c++

  10. #10
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Quello che ti serve è la così detta riflessione, ovvero un programma che analizza se stesso a run-time.

    Che io sappia solo linguaggi di alto livello come Java o C# possono sfruttarla, linguaggi compilati nativamente no; se poi invece esiste sarebbe molto utile anche a me per implementare la serizlizzazione.

    ( 900 posts)

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.