Funkcje lokalizacyjne C

W informatyce funkcje lokalizacyjne C to grupa funkcji w języku programowania C , realizująca podstawowe procedury lokalizacyjne. Funkcje są używane w programach wielojęzycznych w celu dostosowania do określonych ustawień regionalnych. W szczególności można modyfikować sposób wyświetlania liczb i waluty. Te ustawienia wpływają na zachowanie funkcji wejścia/wyjścia w standardowej bibliotece C.

Przegląd funkcji

Funkcje i typy lokalizacji C są zdefiniowane w locale.h ( nagłówek clocale w C++).

Funkcjonować Opis
ustaw język ustawia i pobiera bieżące ustawienia regionalne C
konw.lokalna zwraca szczegóły formatowania numerycznego i pieniężnego dla bieżących ustawień regionalnych

Krytyka

Standardowe funkcje lokalizacyjne C są krytykowane, ponieważ stan lokalizacji jest przechowywany globalnie. Oznacza to, że w danym programie wszystkie operacje związane z ustawieniami narodowymi mogą w danej chwili używać tylko jednego ustawienia narodowego. W rezultacie bardzo trudno jest zaimplementować programy korzystające z więcej niż jednej lokalizacji.

Funkcje zmieniają zachowanie printf/scanf/strtod, które są często używane do zapisywania zapisanych danych do pliku lub do innych programów. W rezultacie plik zapisany w jednej lokalizacji nie będzie czytelny w innej lokalizacji lub w ogóle nie będzie możliwy do odczytania z powodu takich założeń, jak „liczby kończą się przecinkami”. Większość oprogramowania na dużą skalę wymusza ustawienia regionalne na „C” (lub inną stałą wartość), aby obejść te problemy.

Przykład

 
 
 

 

    

     

           

    
        

     
 #include  <stdio.h>  #include  <stdlib.h>  #include  <locale.h>  int  main  (  void  )  {  /* Ustawienia regionalne są wcześniej ustawione na „C”. To wywołanie ustawia go   na „bieżące ustawienia regionalne” przez odczytanie zmiennych środowiskowych: */  setlocale  (  LC_ALL  ,  „”  );  const  struct  lconv  *  const  currentlocale  =  localeconv  ();  printf  (  "W bieżących ustawieniach narodowych domyślnym symbolem waluty jest: %s  \n  "  ,  currentlocale  ->  currency_symbol  );  powrót  EXIT_SUCCESS  ;  } 

Zobacz też