Re: Problems with "atof" from <cstring> library
- From: Paul Davis <paul linuxaudiosystems com>
- To: Wätzold Plaum <waetzold_plaum yahoo de>
- Cc: gtkmm-list gnome org
- Subject: Re: Problems with "atof" from <cstring> library
- Date: Tue, 11 Apr 2006 14:07:59 -0400
On Tue, 2006-04-11 at 19:50 +0200, W�old Plaum wrote:
> Hello,
>
> I've got a strange problem with gtkmm. In the following there are two
> little programms which are mainly the same, but just changed the
> position of "Gtk::Main kit(argc, argv);" The results are different.
> The first version does it right. The second not. Why?
i suspect that GTK sets the locale to something reflecting your location
in an area where the decimal separator is a comma not a dot/period.
if you use C library functions to convert between scalar values and
strings you must be sure to take control of the locale setting if you
want it to work predictably. Here is the C++ object i use for this:
struct LocaleGuard {
LocaleGuard (const char*);
~LocaleGuard ();
const char* old;
};
LocaleGuard::LocaleGuard (const char* str)
{
old = strdup (setlocale (LC_NUMERIC, NULL));
if (strcmp (old, str)) {
setlocale (LC_NUMERIC, str);
}
}
LocaleGuard::~LocaleGuard ()
{
setlocale (LC_NUMERIC, old);
free ((char*)old);
}
i declare an object of that type within the scope of anything where i
need to know that locale is not intended to affect the operation of C
libraryies:
LocaleGuard lg ("POSIX");
--p
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]