2008-11-07 6 views
4

Cette fonction existe sous OS X et vous permet de transmettre des informations locales personnalisées à la fonction. setlocale n'est pas compatible avec les threads, et les paramètres régionaux sont passés en paramètre.Comment obtenir l'équivalent de printf_l sous Linux?

S'il n'y a pas d'équivalent, une méthode printf indépendante de la locale, ou printf juste pour les doubles (% g) sera OK.

Répondre

1

Il existe des routines de conversion de chaîne double à chaîne locale indépendantes à http://www.netlib.org/fp/. La chaîne à double conversion est également disponible. L'API n'est pas très sympa, mais le code fonctionne.

3

Vous pouvez essayer uselocale, qui définit les paramètres régionaux des threads (plutôt que les paramètres régionaux de processus) avant d'appeler printf.

+0

Pas parfait, mais ça marche. Si quelqu'un d'autre a une meilleure réponse, allez-y. –

+0

@ Sunlight: Je pense que vous devriez amplifier votre réponse un peu - mais je pense que vous avez probablement raison. @phjr: la solution BSD/MacOS X avec printf_l() est discutable, mais uselocale() devrait fonctionner. –