On 2017/2/21 3:33, Marvin Gülker wrote:
> the following program should switch to the current locale and then print
> the name of that locale:
> [...]
> It appears, however, that it doesn't do that on my 32-bits Windows 7.
> The program compiles fine, but when I execute it, I get this (after
> the usual "application has requested the runtime yadda yadda"):
>
> terminate called after throwing an instance of 'std::runtime_error'
> what(): locale::facet::_S_create_c_locale name not valid
>
> (That is, an std::runtime_error exception is thrown by the constructor
> of std::locale)
I compiled and ran the program and it didn't generate any exceptions on
my 64-bit Windows 7:
E:\Desktop>cmd
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
E:\Desktop>g++ test.cc -std=c++14 -Wall -Wextra -pedantic
E:\Desktop>a.exe
Locale is now: C
E:\Desktop>g++ --version
g++ (gcc-6-branch HEAD with MCF thread model, built by LH_Mouse.)
6.3.1 20170218
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
> I used the locale name "" (empty string), which should refer to the
> environment's locale and should be available on any platform (I even
> think it is required to do that, but I don't have a C++ standard at
> hand). Using the "C" locale works, but any other value causes the above
> problem.
You are right. See [locale.cons]/6:
explicit locale(const char* std_name);
6 Remarks: The set of valid string argument values is "C", "", and
any implementation-defined values.
> Can someone please clarify what exactly is the problem with the C++
> variant of this program, and how one can get it to work on Windows?
>
> $ g++ --version
> g++.exe (Rev1, Built by MSYS2 project) 6.3.0
> Copyright (C) 2016 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
>
I can't reproduce this problem. It seems that your environment is
broken. I have CC'd this message to the MSYS2 mailing list. Hope it helps.
--
Best regards,
LH_Mouse
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Msys2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/msys2-users