tutorial programar para pagina oficial mundo hola entorno dev descargar compilador como c++ windows locale

c++ - programar - ¿Qué nombres de configuración estándar están disponibles en los compiladores comunes de Windows?



entorno de dev c++ (3)

El estándar es bastante silencioso sobre lo que constituye un nombre de lugar válido; solo el pasar un nombre de configuración regional no válido da como resultado std::runtime_error . ¿Qué nombres de configuración regional se pueden usar en compiladores comunes de Windows como MSVC, MinGW e ICC?


Aquí hay un nombre de lugar que se puede usar prácticamente en cualquier lugar: "" . Es decir, la cadena vacía. Esto contrasta con la configuración regional "C" que probablemente esté obteniendo de forma predeterminada. La cadena vacía como argumento para std::setlocale() significa algo así como "Usar la configuración regional preferida establecida por el usuario o el entorno". Si usa esto, el inconveniente es que su programa no tendrá la misma salida en todas partes; la ventaja es que los usuarios pueden pensar que funciona de la manera que ellos quieren.


Creo que la información que necesita está here :

locale "lang[_country_region[.code_page]]" | ".code_page" | "" | NULL

Esta página proporciona enlaces a:

Aunque mis respuestas cubren setlocale lugar de std::locale , esta página de MSDN parece implicar que el formato es el mismo:

Un objeto de la configuración regional de clase también almacena un nombre de configuración regional como un objeto de cadena de clase. El uso de un nombre de localidad no válido para construir una faceta de localización o un objeto de localización arroja un objeto de clase runtime_error . El nombre de la configuración regional almacenada es "*" si el objeto de configuración regional no puede estar seguro de que una configuración regional de estilo C corresponde exactamente a la representada por el objeto. De lo contrario, puede establecer una configuración regional coincidente dentro de la Biblioteca C estándar, para la ubicación de objeto de configuración regional, llamando a setlocale(LC_ALL, loc.name.c_str) .

También vea esta página y este hilo que tienden a mostrar que std::locale usa internamente setlocale .


Ok, hay una diferencia entre las configuraciones regionales C y C ++.

Empecemos:

  • MSVC C ++ std :: locale y C setlocale

    Acepta nombres de configuración regional como "Idioma [_País] [. Página de códigos]", por ejemplo "English_United States.1251" De lo contrario, arrojaría. Nota: la página de códigos no puede ser 65001 / UTF-8 y debe ser coherente con la página de códigos ANSI para esta configuración regional (o simplemente omitida)

  • MSVC C ++ std :: locale y C setlocale en Vista y 7 deben aceptar las configuraciones regionales [Idioma] [- Script] [- País] como "en-US" usando códigos de idioma ISO-631 y regiones y nombres de script ISO 3166.

    Lo probé con Visual Studio en Windows 7: no funciona.

  • MinGW C ++ std :: locale acepta "C" y "POSIX" no admite otras configuraciones regionales, en realidad gcc solo admite configuraciones regionales sobre la biblioteca GNU C, básicamente solo en Linux.

    setlocale es una llamada nativa a la API de Windows, por lo que debería admitir todo lo que mencioné anteriormente.

    Puede admitir un rango más amplio de configuraciones regionales cuando se usa con bibliotecas alternativas de C ++ como Apache stdcxx o STL Port.

  • ICC: no lo había probado, pero depende de la biblioteca estándar de C ++ que utiliza. Por ejemplo, en Linux usaba libstdc ++ de GCC, por lo que es compatible con todas las configuraciones regionales que admite gcc. No sé qué biblioteca estándar de C ++ usa en Windows.

Si desea tener soporte para configuraciones regionales independientes de "compilador y plataforma" (y en realidad es mucho mejor soporte) eche un vistazo en Boost.Locale

Artyom