locale.h ¶
๋ด๋น : ํ์ค์
location specific information ๋ฅผ setting ํ๋๋ฐ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋งคํฌ๋ก ¶
#define LC_ALL (integer constant expression) ๋ชจ๋ ์นดํ
๊ณ ๋ฆฌ์ ๋ํ ๋ก์ผ์ผ ์ค์ ์ ์ํ ํ๊ฒฝ๋ณ์์ด๋ค
#define LC_COLLATE (integer constant expression) ์คํธ๋ง(string)์ ์ ๋ ฌ ์์(sort order ๋๋ collation)๋ฅผ ์ํ ๋ก์ผ์ผ ์ค์ ์ ์ํด ์ฌ์ฉ
#define LC_CTYPE (integer constant expression) ๋ฌธ์ ๋ถ๋ฅ(์ํ๋ฒณ, ์ซ์, ํ๊ธ ๋๋ ์๋ฌธ์, ๋๋ฌธ์ ๋ฑ๋ฑ), ๋ณํ, ๋์๋ฌธ์ ๋น๊ต์ ์ํ ๋ก์ผ์ผ ์ค์ ์ ์๋ฏธ
#define LC_MONETARY (integer constant expression) ๊ธ์ก ํํ(์ฒ๋จ์ ๊ตฌ๋ถ ๋ฌธ์, ์์์ ๋ฌธ์, ๊ธ์ก ํ์ ๋ฌธ์, ๊ทธ ์์น ๋ฑ)์ ์ํ ๋ก์ผ์ผ ์ค์
#define LC_NUMERIC (integer constant expression) ๊ธ์ก์ด ์๋ ์ซ์ ํํ(์ฒ๋จ์, ์์์ , ์ซ์ ๊ทธ๋ฃนํ ๋ฑ)์ ์ํ ๋ก์ผ์ผ ์ค์
#define LC_TIME (integer constant expression) ์๊ฐ๊ณผ ๋ ์ง์ ํํ(๋ , ์, ์ผ์ ๋ํ ๋ช ์นญ ๋ฑ)์ ์ํ ๋ก์ผ์ผ ์ค์ ์๋ฅผ ๋ค์ด strftime(), strptime()
#define NULL (either 0, 0L, or (void*)0) (0 in C++)
#define LC_COLLATE (integer constant expression) ์คํธ๋ง(string)์ ์ ๋ ฌ ์์(sort order ๋๋ collation)๋ฅผ ์ํ ๋ก์ผ์ผ ์ค์ ์ ์ํด ์ฌ์ฉ
#define LC_CTYPE (integer constant expression) ๋ฌธ์ ๋ถ๋ฅ(์ํ๋ฒณ, ์ซ์, ํ๊ธ ๋๋ ์๋ฌธ์, ๋๋ฌธ์ ๋ฑ๋ฑ), ๋ณํ, ๋์๋ฌธ์ ๋น๊ต์ ์ํ ๋ก์ผ์ผ ์ค์ ์ ์๋ฏธ
#define LC_MONETARY (integer constant expression) ๊ธ์ก ํํ(์ฒ๋จ์ ๊ตฌ๋ถ ๋ฌธ์, ์์์ ๋ฌธ์, ๊ธ์ก ํ์ ๋ฌธ์, ๊ทธ ์์น ๋ฑ)์ ์ํ ๋ก์ผ์ผ ์ค์
#define LC_NUMERIC (integer constant expression) ๊ธ์ก์ด ์๋ ์ซ์ ํํ(์ฒ๋จ์, ์์์ , ์ซ์ ๊ทธ๋ฃนํ ๋ฑ)์ ์ํ ๋ก์ผ์ผ ์ค์
#define LC_TIME (integer constant expression) ์๊ฐ๊ณผ ๋ ์ง์ ํํ(๋ , ์, ์ผ์ ๋ํ ๋ช ์นญ ๋ฑ)์ ์ํ ๋ก์ผ์ผ ์ค์ ์๋ฅผ ๋ค์ด strftime(), strptime()
#define NULL (either 0, 0L, or (void*)0) (0 in C++)
lconv ๊ตฌ์กฐ์ฒด ¶
struct lconv {
ELEMENT "C" LOCALE LOCALE CATEGORY
char* currency_symbol; "" LC_MONETARY
char* decimal_point; "." LC_NUMERIC
char* grouping; "" LC_NUMERIC
char* int_curr_symbol; "" LC_MONETARY
char* mon_decimal_point; "" LC_MONETARY
char* mon_grouping; "" LC_MONETARY
char* mon_thousands_sep; "" LC_MONETARY
char* negative_sign; "" LC_MONETARY
char* positive_sign; "" LC_MONETARY
char* thousands_sep; "" LC_NUMERIC
char frac_digits; CHAR_MAX LC_MONETARY
char int_frac_digits; CHAR_MAX LC_MONETARY
char n_cs_precedes; CHAR_MAX LC_MONETARY
char n_sep_by_space; CHAR_MAX LC_MONETARY
char n_sign_posn; CHAR_MAX LC_MONETARY
char p_cs_precedes; CHAR_MAX LC_MONETARY
char p_sep_by_space; CHAR_MAX LC_MONETARY
char p_sign_posn; CHAR_MAX LC_MONETARY
};
ELEMENT "C" LOCALE LOCALE CATEGORY
char* currency_symbol; "" LC_MONETARY
char* decimal_point; "." LC_NUMERIC
char* grouping; "" LC_NUMERIC
char* int_curr_symbol; "" LC_MONETARY
char* mon_decimal_point; "" LC_MONETARY
char* mon_grouping; "" LC_MONETARY
char* mon_thousands_sep; "" LC_MONETARY
char* negative_sign; "" LC_MONETARY
char* positive_sign; "" LC_MONETARY
char* thousands_sep; "" LC_NUMERIC
char frac_digits; CHAR_MAX LC_MONETARY
char int_frac_digits; CHAR_MAX LC_MONETARY
char n_cs_precedes; CHAR_MAX LC_MONETARY
char n_sep_by_space; CHAR_MAX LC_MONETARY
char n_sign_posn; CHAR_MAX LC_MONETARY
char p_cs_precedes; CHAR_MAX LC_MONETARY
char p_sep_by_space; CHAR_MAX LC_MONETARY
char p_sign_posn; CHAR_MAX LC_MONETARY
};
ํจ์ ¶
ํจ์ | ์ค๋ช |
struct lconv* localeconv(void); | lconv ๊ตฌ์กฐ์ฒด๋ฅผ ํ์ฌ์ location setting ์ ๋ง๊ฒ ๊ฐ์ ์ค์ ํ๋ค. |
char* setlocale(int category, const char* locale); | category์ ๋ํด ๋ก์ผ์ผ locale์ ์ค์ ํ๊ณ (๋ฌผ๋ก , ์ฌ์ฉ ๊ฐ๋ฅํ ๋ก์ผ์ผ์ธ ๊ฒฝ์ฐ), ์ค์ ๋ ๋ก์ผ์ผ๊ฐ์ ๋ฆฌํด. |
setLocale ์ ์ ¶
~cpp #include <stddef.h> #include <locale.h> #include <stdlib.h> #include <string.h> void with_other_locale (char *new_locale, void (*subroutine) (int), int argument) { char *old_locale, *saved_locale; /* ํ์ฌ ๋ก์ผ์ผ๋ช ์ ์์๋ธ๋ค. */ old_locale = setlocale (LC_ALL, NULL); /* setlocale()์ ์ฌํธ์ถ ์ํด ๋ณ๊ฒฝ๋ ๊ฒ์ ๋๋นํด ๋ก์ผ์ผ ์ด๋ฆ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๋ค. */ saved_locale = strdup (old_locale); if (saved_locale == NULL) fatal ("Out of memory"); /* ๋ก์ผ์ผ์ ๋ณ๊ฒฝํ๊ณ subroutine์ ์ํํ๋ค. */ setlocale (LC_ALL, new_locale); (*subroutine) (argument); /* ์๋์ ๋ก์ผ์ผ๋ก ๋ณต๊ทํ๋ค. */ setlocale (LC_ALL, saved_locale); free (saved_locale); }