【发布时间】:2011-05-12 15:05:00
【问题描述】:
将数字转换为字符串(反之亦然)的安全/便携方式是什么?
我在 Linux 上,我的设置区域设置是,当我使用 sprintf 时,数字有一个“,”而不是一个“。”作为分隔符。
有时我想要它们,有时不是:)
我看到了一些暗示使用用户设置的解决方案。显然这是不应该做的事情。有人建议使用 uselocale
snprintf : simple way to force . as radix?
有人可以详细说明一下(看起来它在某些 glibc (
我自己试过,但我的 C 技能非常有限。
[编辑]
写完我的问题后,我在 Swisslinux.org 上通过 [GO]Skywalker13 找到了这段代码。 有什么想法吗?内存使用情况如何? (我需要多次调用这个函数)
#define _GNU_SOURCE
#include <locale.h>
#include <stdlib.h>
double
my_atof (const char *nptr)
{
double res;
locale_t new_locale;
new_locale = newlocale (LC_NUMERIC_MASK, "C", NULL);
res = strtod_l (nptr, NULL, new_locale);
freelocale (new_locale);
return res;
}
【问题讨论】: