Bonjour,
Je dois transformer du wxString en Float.
J'ai vu qu'il y avait les méthodes ToLong, ToLongLong, ToDouble,... mais ce n'est pas en float...
Merci de votre aide.
Bonjour,
Je dois transformer du wxString en Float.
J'ai vu qu'il y avait les méthodes ToLong, ToLongLong, ToDouble,... mais ce n'est pas en float...
Merci de votre aide.
Évènements dans le 06?
www.sortir06.com
Salut.
Tu peux utiliser la méthode ToDouble, et faire un cast pour obtenir un float.
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 double dVal; MywxString.ToDouble(&dVal); float fVal=(float)dVal;
Xav'
Bonjour,
Pour le cast, préfère :
Accessoirement, tu peux aussi utiliser les facilités de conversion offertes par boost :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 float fVal=static_cast<float>(dVal);
qui t'offrira un peu plus de service.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 boost::numeric_cast<float>(d);
Ou carrément boost::lexical_cast :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 float f_val = boost::lexical_cast<float>(wx_ma_string.c_str());
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
@3DArchi : Peux-tu donner la différence entre le cast que j'ai indiqué et le static_cast STP ?
Etant programmeur amateur autodidacte, c'est le genre de notion que j'ai du mal à saisir.
Merci d'avance.
@+
Xav'
Salut,
Les nouveaux opérateurs de transtypage ont été introduits en C++ pour être permettre au développeur de bien maîtriser ses conversions. Et notamment, quand il fait quelque chose de pas très catholique, en avoir pleinement conscience. Par exemple :
Car il y a danger à convertir un int* vers un long *.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main() { int i; int *pi=&i; long *pl; pl = (long*)pi;// OK pl=static_cast<long*>(pi); // Erreur return 0; }
Cependant, si tu veux vraiment le faire, c'est toujours possible :
Mais, si un autre développeur vient relire ton code derrière, en voyant cette ligne, il sait qu'on va commencer à faire des choses bizarres ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pl=reinterpret_cast<long*>(pi); // OK
Ca vérifie aussi les problèmes de const :
En résumé, cela renforce le typage et ses conversions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 int main() { int i; const int *pci=&i; int *pi2; // pi2 = pci;//Erreur pi2 = (int*)pci; // OK mais on ne sait pas qu'on a perdu le const ! // pi2=static_cast<int*>(pci); // Erreur // pi2=reinterpret_cast<int*>(pci); // Erreur pi2=const_cast<int*>(pci);// OK mais on sait qu'on perd le const ! return 0; }
Accessoirement, si tu as besoin de retrouver toutes les fois dans ton code où tu as fait des conversions, il sera beaucoup plus facile de faire une recherche sur les mots clés (static_cast...) que de chercher tout les occurences '(type)'.
Tu peux trouver quelques blabla dans la FAQ et dans un tuto.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Merci.
Vu sous cet angle, je comprend mieux.
Et du coup, je pense également que c'est une bonne habitude à prendre que d'utiliser ces nouveaux opérateurs de transtypage, par sécurité.
@+
Xav'
C'est plus qu'une bonne habitude
Le cast à la 'C' a été conservé par souci de compatibilité avec l'existant et avec le code C. Mais, il est clairement dit que la bonne façon de programmer est d'utiliser ces nouveaux opérateurs de transtypage. On a même l'impression que certain aurait préféré interdire les anciens 'C'-style cast...
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager