OVH Cloud OVH Cloud

[debutant] attribution de nom dynamique

12 réponses
Avatar
chantal nobel
bonjour
voila une question con:
quel est le moyen de passer le contenu d'une variable comme nom d'une
seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...
>stephane

10 réponses

1 2
Avatar
Benoit Rousseau
chantal nobel wrote:
bonjour
voila une question con:
quel est le moyen de passer le contenu d'une variable comme nom d'une
seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...
stephane




Aucun qui ne soit très efficace...
Tu peux essayer avec des std::map

#include <map>

...

std::map< std::string, std::string > my_var;
my_var[ "i" ] = "j";
my_var[ "j" ] = "cool";

std::cout << my_var[ my_var[ "i" ] ] << std::endl;



--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/


Avatar
Michel Michaud
Dans news:3fd9e988$0$22333$, chantal
bonjour
voila une question con:
quel est le moyen de passer le contenu d'une variable comme nom
d'une seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...
stephane



Pourquoi veux-tu faire ça ? Si tu proviens d'un autre langage,
il faut s'adapter et la solution C++ est plutôt d'utiliser des
pointeurs ou des références lorsqu'on veut qu'un variable fasse
référence à une autre.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Marc Boyer
chantal nobel wrote:
bonjour
voila une question con:


Non, pas du tout.

quel est le moyen de passer le contenu d'une variable comme nom d'une
seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...


Présenté tel quel, c'est impossible en C++. Ce que tu demandes,
c'est un langage réflexif, c'est à dire qui se manipule lui même.
Après, tu peux faire un tableau associatif (std::map) de
chaines.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
chantal nobel
Michel Michaud wrote:
Dans news:3fd9e988$0$22333$, chantal

bonjour
voila une question con:
quel est le moyen de passer le contenu d'une variable comme nom
d'une seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...
stephane




Pourquoi veux-tu faire ça ? Si tu proviens d'un autre langage,
il faut s'adapter et la solution C++ est plutôt d'utiliser des
pointeurs ou des références lorsqu'on veut qu'un variable fasse
référence à une autre.

en fait c une des possibilités que j'utilise en php, et je me suis

retrouvé deux, trois fois dans des cas ou cela m'aurait été bien utile,
mais je vais essayé avec les std::map
merci
stephane




Avatar
Michel Michaud
Dans news:3fd9f98c$0$22330$, chantal
Michel Michaud wrote:
Dans news:3fd9e988$0$22333$, chantal
quel est le moyen de passer le contenu d'une variable comme nom
d'une seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...
stephane



Pourquoi veux-tu faire ça ? Si tu proviens d'un autre langage,
il faut s'adapter et la solution C++ est plutôt d'utiliser des
pointeurs ou des références lorsqu'on veut qu'un variable fasse
référence à une autre.

en fait c une des possibilités que j'utilise en php, et je me suis

retrouvé deux, trois fois dans des cas ou cela m'aurait été bien
utile, mais je vais essayé avec les std::map


C'est bien ce que je pensais : en php, on fait ça quand on a
besoin d'un niveau d'indirection supplémentaire. En C++ (et dans
bien d'autres langages), on fait ça avec des pointeurs ou des
références. C'est d'ailleurs plus direct et à mon avis plus facile
(en php et autres semblables, ça donne du code difficile à rendre
solide et correct -- ce qui veut dire beaucoup si je dis que c'est
plus facile avec des pointeurs !).


--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/




Avatar
chantal nobel
Michel Michaud wrote:
Dans news:3fd9f98c$0$22330$, chantal

Michel Michaud wrote:

Dans news:3fd9e988$0$22333$, chantal

quel est le moyen de passer le contenu d'une variable comme nom
d'une seconde,
genre
string i="j";
string j="cool";
et la paf je voudrais le contenu de i pour atteindre celui de j...

stephane



Pourquoi veux-tu faire ça ? Si tu proviens d'un autre langage,
il faut s'adapter et la solution C++ est plutôt d'utiliser des
pointeurs ou des références lorsqu'on veut qu'un variable fasse
référence à une autre.



en fait c une des possibilités que j'utilise en php, et je me suis
retrouvé deux, trois fois dans des cas ou cela m'aurait été bien
utile, mais je vais essayé avec les std::map



C'est bien ce que je pensais : en php, on fait ça quand on a
besoin d'un niveau d'indirection supplémentaire. En C++ (et dans
bien d'autres langages), on fait ça avec des pointeurs ou des
références. C'est d'ailleurs plus direct et à mon avis plus facile
(en php et autres semblables, ça donne du code difficile à rendre
solide et correct -- ce qui veut dire beaucoup si je dis que c'est
plus facile avec des pointeurs !).


bon je reviens à la charge parce que je crois que jeme suis trompé en

expliquant ce que je cherche à faire, il s'agirait en fait d'une méthode
pour evaluer une string en tant que ligne de code, genre
string i="int z$";
comment je me débrouille pour que le contenu de i soit evaluer?





Avatar
Benoit Rousseau
chantal nobel wrote:
bon je reviens à la charge parce que je crois que jeme suis trompé en
expliquant ce que je cherche à faire, il s'agirait en fait d'une méthode
pour evaluer une string en tant que ligne de code, genre
string i="int z$";
comment je me débrouille pour que le contenu de i soit evaluer?


Ce n'est pas possible de le faire "simplement"...
Il faut parser la chaine et stocker la valeur de z quelquepart. Parser
comme ca serait coûteux et/ou peu fiable...
Si tu ne veux travailler qu'avec des int, c'est encore facile (une
100ène de lignes de codes, tout au plus).

Par contre, si c'est du C++ que tu veux parser, ca devient plus dur...
Peut-être qu'en invoquant le compilateur pour créer une librairie puis
charger cette librairie... mais bon...


--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Avatar
Michel Michaud
Dans news:3fe06b50$0$7134$, chantal
bon je reviens à la charge parce que je crois que jeme suis trompé
en expliquant ce que je cherche à faire, il s'agirait en fait d'une
méthode pour evaluer une string en tant que ligne de code, genre
string i="int z$";
comment je me débrouille pour que le contenu de i soit evaluer?


D'où vient cette « ligne de code » ? Si tu veux écrire un
compilateur, il faut écrire un compilateur :-)

Encore une fois, il serait bon que tu expliques ce qui te fait
vouloir ça et non pas le problème particulier...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
chantal nobel
Michel Michaud wrote:
Dans news:3fe06b50$0$7134$, chantal

bon je reviens à la charge parce que je crois que jeme suis trompé
en expliquant ce que je cherche à faire, il s'agirait en fait d'une
méthode pour evaluer une string en tant que ligne de code, genre
string i="int z$";
comment je me débrouille pour que le contenu de i soit evaluer?



D'où vient cette « ligne de code » ? Si tu veux écrire un
compilateur, il faut écrire un compilateur :-)

Encore une fois, il serait bon que tu expliques ce qui te fait
vouloir ça et non pas le problème particulier...

en fait j'ai pas d'idee précise en tête, c'est juste une question qui me

turlupine, j'ai toujours réussi à me débrouiller autrement jusqu'ici...
mais merci pour les réponses...


Avatar
un.gabacho.sans.pourrier
"Michel Michaud" writes:

Dans news:3fe06b50$0$7134$, chantal
bon je reviens à la charge parce que je crois que jeme suis trompé
en expliquant ce que je cherche à faire, il s'agirait en fait d'une
méthode pour evaluer une string en tant que ligne de code, genre
string i="int z$";
comment je me débrouille pour que le contenu de i soit evaluer?


D'où vient cette « ligne de code » ? Si tu veux écrire un
compilateur, il faut écrire un compilateur :-)

Encore une fois, il serait bon que tu expliques ce qui te fait
vouloir ça et non pas le problème particulier...


Intuitivement je dirais que le monsieur voudrait faire un programme
interactif, où un utilisateur peut entrer des instructions.

Il faut que le monsieur se fasse un petit parseur. Ou peut-être qu'il
cherche du côté des langages interprétés, y en a peut-être qui
permettent ces fantaisies.


1 2