how to set locale with C++

marco atzeri marco.atzeri@gmail.com
Thu Feb 9 14:24:00 GMT 2012


On 2/9/2012 1:37 PM, Corinna Vinschen wrote:
> On Feb  9 12:13, marco atzeri wrote:
>> Attached a small example taken from Bruce Eckel Thinking in C++
>>
>> On cygwin both this call
>>
>>    cout.imbue(locale("en_US.UTF-8"));
>>
>>    cout.imbue(locale("fr_FR.UTF-8"));
>>
>> raise exception
>>
>> "terminate called after throwing an instance of 'std::runtime_error'
>>    what():  locale::facet::_S_create_c_locale name not valid
>> Aborted (core dumped)"
>>
>> I could understand eventually the second one, but "English (US)" is
>> the current windows locale so I expected that at least "en_US.UTF-8"
>> is accepted.
>>
>> What I am missing ?
>
> This doesn't look like a Cygwin issue.  The above error
> "locale::facet::_S_create_c_locale name not valid" points to some
> problem in the library implementing the locale call.  The underlying
> plain C call setlocale should work fine.
>
>
> Corinna
>

g++ 4.5.3 seems to have a problem on cygwin.

setlocale on pure C is working
(modified from
http://www.cplusplus.com/reference/clibrary/clocale/setlocale/)

$ ./setlocale.exe
Locale is: C
Date is: Thu Feb  9 14:52:45 2012
Currency symbol is:
-
Locale is: fr_FR.UTF-8
Date is: jeu.  9 févr. 2012 14:52:45
Currency symbol is: €
-


Dave,
it could be related to libstdc++ built with a different
--enable-clocale option ?

http://gcc.gnu.org/onlinedocs/libstdc++/manual/build.html

Or that functionality is not available on cygwin ?

Regards
Marco

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list