Retourner aux forums || Retourner au forum Programmation.c
Programmation.c : Récupérer un xsd:decimal en C
Posté par Bonnefille Guilhem (page perso, ) le 26 septembre 2005
0
Bonjour,Je suis confronté à un problème que j'imagine très classique, mais c'est la première fois que je joue avec les locales.
J'ai un soft écrit en GTK. Il lit des fichiers en XML (lecture réalisée avec expat). Un des champs est un réel (xsd:decimal). Le champ en question est converti en double avec strtod.
Mon problème, c'est que l'appli se retrouve localisée (c'est bien) mais du coup, strtod ne reconnait pas la totalité du réel.
En effet, je suis dans un environnement fr_FR. Or, le xsd:decimal utilise obligatoirement le '.' (point) comme séparateur. En environnement fr_FR, strtod s'attend à trouver un ',' (une virgule).
Comment faire proprement pour récupérer cette valeur ?
J'ai pensé à modifier la locale avant strtod et la restituer après, mais c'est pas terrible.
XML étant un format d'échange, est-ce que ce n'est pas à la librairie expat de faire le boulot ?
Merci d'avance pour tous vos conseils.
> Lire le message (2 commentaires, moyenne: 1,5).
Réponse à moi-même
Posté par
Bonnefille Guilhem (page perso, ) le 26/09/2005 à 15:05. (lien). Évalué à 2.
J'ai cherché un peu plus loin que le bout de mon nez.
J'ai trouvé que la glib fournit des fonctions pour contourner ce problème. La fonction à utiliser est g_strtod.
Si vous avez d'autres solutions, la discussion reste ouverte.
-
[^]Re: Réponse à moi-même
Posté par Christophe Fergeau () le 03/10/2005 à 20:39. (lien). Évalué à 1.Tu dois pouvoir changer LC_NUMERIC avec setlocale temporairement à C pour faire ton strtod. Sinon tu réécris ton propre strtod ;)
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.