Conversion char en int, float et double - C++ - Programmation
Marsh Posté le 07-11-2004 à 15:07:13
http://www.parashift.com/c++-faq-l [...] l#faq-38.3
Faq 38.1 38.2 et 38.3
Marsh Posté le 07-11-2004 à 15:52:22
oula.
pour faire encore plus simple, y a ce genre de chose dans boost
Code :
|
Marsh Posté le 07-11-2004 à 17:14:13
Taz a écrit : oula.
|
Ca permet de convertir des chaines de caracteres en int, float ou double ?
J ai un peu de mal a comprendre comment ca marche....tu peux m eclairer ou me guider un peu ?
Gracias
Marsh Posté le 07-11-2004 à 17:30:26
Je ne peux pas utiliser
#include <boost/lexical_cast.hpp>
Marsh Posté le 07-11-2004 à 17:46:21
si tu peux.
comment ça marche ? ben une pauvre fonction template avec un istringstream à l'intérieur. Evadream t'as filé un lien sur comment faire. Y a également des tas d'exemples sur le forum et on a déjà donné des exemples de fonctions générique. Ça tiens en 1 ligne
Marsh Posté le 07-11-2004 à 17:56:11
J ai cette erreur avec ton programme quand je l utilise tel quel....je pense que la bibliotheque n est pas presente
Error: cannot open file "boost/lexical_cast.hpp" FILE:convertbis.C LINE:4
*** Interpreter error recovered ***
Marsh Posté le 07-11-2004 à 18:21:00
personne pour m aider
Au secours...c est super urgent....Je dois rendre le code dans 40min
Marsh Posté le 07-11-2004 à 18:30:22
sylvaing a écrit : personne pour m aider |
man strtol
man strtof
man strtod
edit: c'est du C, mais c'est à peu près standard.
Marsh Posté le 07-11-2004 à 18:49:34
Oki...j utilise strtod pour convertir mes chaines de caractere en float, mais le probleme c est que lorsque j atteint des valeurs comme 123456789,94995843648, il me donne seulement 123456789 Est ce qu il y a possibilité d aumenter la precision apres la virgule ?
Marsh Posté le 07-11-2004 à 19:08:34
Personne peux me dire comment obtenir la precision que je veux avec strtof ?
Marsh Posté le 07-11-2004 à 19:19:21
sylvaing a écrit : Oki...j utilise strtod pour convertir mes chaines de caractere en float, mais le probleme c est que lorsque j atteint des valeurs comme 123456789,94995843648, il me donne seulement 123456789 Est ce qu il y a possibilité d aumenter la precision apres la virgule ? |
Oui: il faut utiliser un point ou changer la localisation.
Marsh Posté le 07-11-2004 à 19:29:36
tu peux expliquer concretement comment faire ? je suis completement nul
Marsh Posté le 07-11-2004 à 19:31:58
sylvaing a écrit : tu peux expliquer concretement comment faire ? je suis completement nul |
Vous êtes sur quel os?
Marsh Posté le 07-11-2004 à 19:38:11
Redhat et Windows XP....il faudrait que ca marche sur les deux... mais principalement sous redhat
Marsh Posté le 07-11-2004 à 19:52:10
upupup
Je pense que je dois utiliser setlocale, mais je ne sais pas comment faire
Marsh Posté le 07-11-2004 à 20:01:18
sylvaing a écrit : Redhat et Windows XP....il faudrait que ca marche sur les deux... mais principalement sous redhat |
bon, j'imagine que ce n'est pas critique, que vous ne vous servez pas de la chaine de reste (sinon vous auriez su que le problème venait de la virgule) alors on ne va pas se faire chier avec la localisation:
Code :
|
Ca vous va?
Marsh Posté le 07-11-2004 à 20:13:05
Spoiler : mais putain vous faites chier à pas vouloir faire de recherche. |
Doc > t'es un vrai boolay avec ton C. Et je sais pas ce que tu fiches avec ton my_strtod, qui utilise strdup (pas standard). bref il peut pas en faire grand chose. c'est inutilement compliqué et long. et pas générique
quant à toi sylvaing, tu mérites pas mieux : eva t'as filé un lien avec du code, et t'es même pas foutu de le copier. Tu peux t'en prendre qu'à toi
Code :
|
si t'avais pris 2 secondes pour rechercher, t'aurais trouvé ça, qui est similaire au lien d'eva
Marsh Posté le 07-11-2004 à 20:26:58
Taz a écrit : Doc > t'es un vrai boolay avec ton C. Et je sais pas ce que tu fiches avec ton my_strtod, qui utilise strdup (pas standard). bref il peut pas en faire grand chose. c'est inutilement compliqué et long. et pas générique |
C'est toujours plus standard que l'utilisation de boost, jeune idiot. Tu me diras, boost, c'est une solution géniale pour pouvoir faire une pauvre conversion à trois francs six sous...
Citation : si t'avais pris 2 secondes pour rechercher, t'aurais trouvé ça, qui est similaire au lien d'eva |
Manque de chance, il ne pourra toujours pas convertir ses nombres et 3,14 lui donnera toujours 3.00
Marsh Posté le 07-11-2004 à 20:28:51
sylvaing a écrit : strdup ne marche pas |
Code :
|
Marsh Posté le 07-11-2004 à 20:35:41
chrisbk a écrit : smoche ton C, la méthode taz est achement plus belle |
Déclarer un objet pour faire une pauvre conversion, c'est beau? Ben putain...
Marsh Posté le 07-11-2004 à 20:37:09
pis faire de l'alloc dyn pour une pauvre conversion, c'est pas franchement mieux
Marsh Posté le 07-11-2004 à 20:42:22
chrisbk a écrit : pis faire de l'alloc dyn pour une pauvre conversion, c'est pas franchement mieux |
je n'avais pas envie qu'il s'embête avec les locales qui peuvent ne pas être installées selon sa plateforme. Sinon, pour squizzer ça, rien de plus facile: setlocale(LC_NUMERIC, "locale_qui_va_bien" ), strtod et c'est torché.
Marsh Posté le 07-11-2004 à 21:11:35
DocMaboul a écrit : Déclarer un objet pour faire une pauvre conversion, c'est beau? Ben putain... |
et alors ? toi tu viens bien de réinventer la roue ...
Marsh Posté le 07-11-2004 à 15:04:48
Hola todos,
Existe t il des fonctions toutes faites dans une bibliotheque C++ pour convertir une chaine de caractere de type char mot[80] en entier et en float (ou double) ? C est tres urgent et je prefererais ne pas a avoir a reecrire une telle macro etant donné que les entiers et les floats que representent mes chaines de caracteres n ont pas tous la meme dimension (pour les entiers de -1 a 10000 et pour les floats de -1.32453 a 15896.22999304456.
Si vous avez un truc a me conseillez, une fonction a me proposer, je suis tout ouie
Muchas gracias
PS: Une chaine de caractere doit bien se terminer par \n ?