------- Comment #9 from jakub at gcc dot gnu dot org  2008-12-05 09:10 -------
Forcing "," thousands separator when none should be used is very weird.  Does
C++ standard mandate that behavior?  "" means thousands shouldn't be separated
by any separator.  In most cases such locales also have grouping 0;0 or -1, but
there
are buggy? locales, e.g. bg_BG, that specify empty thousands_sep, yet have
grouping 3;3.  For empty thousands_sep glibc just forces no grouping:
          if ((wide && thousands_sepwc == L'\0')
              || (! wide && *thousands_sep == '\0'))
            grouping = NULL;

BTW, thousands_sep is a multibyte string, it can be multiple bytes (or none, as
discussed here).  Say ru_RU has:
"<U2002>"
which is 3 bytes:
<U2002>     /xe2/x80/x82 EN SPACE
and a bunch of locales are using "<U00A0>", which is 2 bytes:
<U00A0>     /xc2/xa0     NO-BREAK SPACE
_NL_NUMERIC_THOUSANDS_SEP_WC is always just one wchar_t though.

thousands_sep is one of the things that changed in fr_FR this year, see
sourceware #6040.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38411

Reply via email to