Passer de string à int (ou real)

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Passer de string à int (ou real)

Message non lu par maurice »

Bonjour,

il est possible de passer du type int à string avec :

Code : Tout sélectionner

int n;
string s=format("%i", n);
Y-a-t-il un moyen faire le chemin inverse ?

Merci
Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
Romain Janvier
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 146
Inscription : lundi 23 août 2010, 14:57

Re: passer de string à int (ou real)

Message non lu par Romain Janvier »

Apparemment ecast permet de la faire. Pas le temps de tester, mais int i=ecast(s); devrait le faire. Sinon tu as testé int i=(int)s ?
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: passer de string à int (ou real)

Message non lu par maurice »

Merci, ecast ne marche pas comme ça et je ne sais pas m'en servir. la doc dit :
Explicit casts are implemented similarly, with operator ecast.
mais rien de plus.
Par contre, le i=(int)s que ne n'avait pas trouvé dans la doc mais qui y est p 63, travaille :

Code : Tout sélectionner

$ asy
Welcome to Asymptote version 2.08 (to view the manual, type help)
> string s="123";
> int i=ecast(s);
-: 1.7: no matching variable 'ecast'
> int i =(int)s;
> write(i);
123
Merci, Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Passer de string à int (ou real)

Message non lu par GMaths »

maurice a écrit :il est possible de passer du type int à string avec :

Code : Tout sélectionner

int n;
string s=format("%i", n);
A noter aussi ces possibilités :

Code : Tout sélectionner

int a=5;

string s1=string(a);
string s2=(string) a;

write(s1);
write(s2);
Romain Janvier a écrit :Apparemment ecast permet de la faire. Pas le temps de tester, mais int i=ecast(s); devrait le faire.
Non, pas ainsi.
Maurice a écrit :Merci, ecast ne marche pas comme ça et je ne sais pas m'en servir.
  • Un exemple avec du transtypage implicite :

    Code : Tout sélectionner

    int operator cast(string a)
    {
      return length(a);
    }
    string b="abc";
    write(b);
    write(10+b);
  • Le même exemple en imposant que le transtypage soit explicite :

    Code : Tout sélectionner

    int operator ecast(string a)
    {
      return length(a);
    }
    string b="abc";
    write(b);
    write(10+(int)b);
Je pense que ces exemples devraient être parlants.
Romain Janvier
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 146
Inscription : lundi 23 août 2010, 14:57

Re: Passer de string à int (ou real)

Message non lu par Romain Janvier »

Ha ok, j'avais vu ca dans ta liste de fonctions alors je me suis dis pourquoi pas. Sinon de facon générale, si la conversion semble faisable, ca vaut le coup de tenter un cast de base du genre "type1 v= (type2) w;"