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.
# Réponse à moi-même
Posté par Bonnefille Guilhem (site web personnel) . Évalué à 2.
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 . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.