ciao,
esiste che voi sappiate un'implementazione in c++ di una funzione che lavora come la eval() del PHP?
tnx
ciao,
esiste che voi sappiate un'implementazione in c++ di una funzione che lavora come la eval() del PHP?
tnx
Difficile. Dovrebbe compilare il codice al volo...
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
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
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.
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?
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.
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:
PS al posto del "cout" puoi utilizzare la "printf" ed al posto della "cin.get" o "cin" puoi utilizzare la "scanf"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; }
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
il programma non dovrebbe operare un accodamento ma una sostituzione. date le stringhe:PPS la funzione "strcat" inserisce il contenuto del secondo parametro in coda al contenuto del primo paramentro
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++
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)